动规思想但没用动规只有20。。。
查看原帖
动规思想但没用动规只有20。。。
411008
稀音Seine楼主2021/11/13 11:14
#include<bits/stdc++.h>
using namespace std;
int mp[15][15];
int a,b,c,n;
int cost,ans;
void aha(int x,int y){
	int w=0;
	int ww=mp[x][y];
	mp[x][y]=0;
	for(int i=x;i<=n;i++){
		for(int j=y;j<=n;j++){
			if(mp[i][j]){
				w=max(mp[i][j],w);
			}
		}
	}
	mp[x][y]+=w+ww;
}
int main(){
	cin>>n;
	cin>>a>>b>>c;
	mp[a][b]=c;
    while((a+b+c)!=0){
    	cin>>a>>b>>c;
    	mp[a][b]=c;
	}
	for(int i=n;i>=1;--i){
		for(int j=n;j>=1;--j){
			if(mp[i][j]){
			aha(i,j);
			}
		}
	}
	int ii,jj;
	//每次都要判断接下来走的这个右下角的矩形中和最大
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
				if(mp[i][j]>cost){
					cost=mp[i][j];
					ii=i;
					jj=j;
				}	 
		}
	}
	mp[ii][jj]=0;
	ans+=cost;
	cost=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			cost=max(cost,mp[i][j]);
		}                         
	ans+=cost;
	cout<<ans;
	return 0;
}
2021/11/13 11:14
加载中...