求助,全re
查看原帖
求助,全re
849602
封禁用户楼主2024/1/29 11:22
#include <bits/stdc++.h>
using namespace std;
int dp[1015][1015],n,m,a[1111][1111],b[1111][1111];
int show(int i,int j){
	if(!i)return 0;
	show(i-1,b[i][j]-1);
	cout<<b[i][j]<<" ";
}
int main(){
	cin>>n>>m;
	memset(dp,0xc0,sizeof(dp));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			dp[0][j]=0;
		}
	}
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		for(int j=i;j<=m-n+i;j++){
			if(dp[i][j-1]<dp[i-1][j-1]+a[i][j]){
				dp[i][j]=dp[i-1][j-1]+a[i][j];
				b[i][j]=j;
			}
			else{
				dp[i][j]=dp[i][j-1];
				b[i][j]=b[i][j-1];
			}
		}
	}
	cout<<dp[n][m]<<endl;
	show(n,m);
}
2024/1/29 11:22
加载中...