0分求调
查看原帖
0分求调
991651
wangmingrui123456楼主2025/1/20 12:10
#include<bits/stdc++.h>
using namespace std;
int f,v,a[150][150],dp[150][150],w[150],now;
void print(int x,int y){
	if(y==0||x==0)return;
	if(dp[x-1][y-1]+a[x][y]==dp[x][y]){
		print(x-1,y-1);
		printf("%d ",x);
	}
	else print(x-1,y);
}
int main(){
    scanf("%d%d",&f,&v);
    for(int i=1;i<=f;++i){
        for(int j=1;j<=v;++j)scanf("%d",&a[i][j]);
    }
    for(int i=1;i<=f;++i){
        for(int j=i;j<=v;++j){
            dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]+a[i][j]);
        }
    }
//    for(int i=1;i<=f;++i){
//    	for(int j=1;j<=v;++j){
//    		printf("%d ",dp[i][j]);
//		}
//		printf("\n");
//	}
    printf("%d\n",dp[f][v]);
    print(f,v);
}
2025/1/20 12:10
加载中...