1 条题解

  • 0
    @ 2025-9-10 9:00:38

    C++ :

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N = 20;
    int val[N][N],f[N][N],ans;
    
    void show(int i,int j){
    	if (i==0) return;
    	for (int k=0; k<=j; k++)
    		if (ans==f[i-1][k]+val[i][j-k]){
    			ans=f[i-1][k];
    			show(i-1,k);
    			cout<<i<<" "<<j-k<<endl;
    			return;
    		}
    }
    
    int main(){
    	int n,m;
    	cin>>n>>m;
    	for (int i=1; i<=n; i++)
    		for (int j=1; j<=m; j++) cin>>val[i][j];
    	for (int i=1; i<=n; i++)
    		for (int j=1; j<=m; j++)
    			for (int k=0; k<=j; k++)
    				f[i][j]=max(f[i][j],f[i-1][k]+val[i][j-k]);
    	ans=f[n][m];
    	cout<<ans<<endl;
    	show(n,m);
    	return 0;
    }
    
    • 1

    信息

    ID
    3577
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者