zoukankan      html  css  js  c++  java
  • [SCOI2005]最大子矩阵 动态规划

    没啥难度,送分题:

    Code:

    #include<cstdio>
    #include<algorithm>
    #include<string>
    #include<cstring>
    using namespace std;
    const int maxn=105;
    const int inf=-100000000;
    int val[maxn][maxn],sumv[maxn];
    int dp[maxn][maxn][20];
    int left[maxn], right[maxn];
    void SetIO(string a){
    	string in=a+".in",out=a+".out";
    	freopen(in.c_str(),"r",stdin);
    	freopen(out.c_str(),"w",stdout);
    }
    void end(){
    	fclose(stdin);
    	fclose(stdout);
    }
    void update(int &a,int b){
    	if(b>a) a=b;
    }
    int main(){
    	//SetIO("sweet");
    	int n,m,k;
    	scanf("%d%d%d",&n,&m,&k);
    	for(int i=1;i<=n;++i)
    		for(int j=1;j<=m;++j) scanf("%d",&val[i][j]);
    	int ans=0;
    	for(int i=1;i<=n;++i){
    		left[i]=left[i-1]+val[i][1];
    		right[i]=right[i-1]+val[i][2];
    	}
    	for(int i=0;i<=n;++i)
    		for(int j=0;j<=n;++j)
    		{
    			if(i==0&&j==0)continue;
    			for(int p=1;p<=k;++p)
    			{
    			    if(i==j)
    			    {
    			    	for(int st=i-1;st>=0;--st) {
    			    	    update(dp[i][j][p], dp[st][st][p]);
    			    	    update(dp[i][j][p], dp[st][st][p-1]+left[i]-left[st]+right[i]-right[st]);	
    			    	}
    
    			    }
    			    
    			   
    			        for(int st=i-1;st>=0;--st){
    			    	    update(dp[i][j][p], dp[st][j][p]);
    			    	    update(dp[i][j][p], dp[st][j][p-1]+left[i]-left[st]);
    			        }
    			        for(int st=j-1;st>=0;--st){
    			    	    update(dp[i][j][p], dp[i][st][p]);
    			    	    update(dp[i][j][p], dp[i][st][p-1]+right[j]-right[st]);
    			        }
    			    
    			    update(ans,dp[i][j][p]);	
    			}
    		}
    	printf("%d",ans);
    	return 0;
    }
    

      

  • 相关阅读:
    作业4
    PSP记录个人项目耗时
    代码复审
    是否需要有代码规范?
    作业二(1)
    作业二(2)
    作业一
    软件工程学期总结
    作业4
    作业3(PSP表格)
  • 原文地址:https://www.cnblogs.com/guangheli/p/9849220.html
Copyright © 2011-2022 走看看