POJ 1050 to the max最大子矩阵

来源:互联网 发布:js中的单例模式 编辑:程序博客网 时间:2024/05/29 04:46

比较经典的DP题目,题意就是给你一个大矩阵然后让你找到一个子矩阵使得该矩阵云素和最大.这个题目的优化很厉害的,直接枚举起始位置然后用最大子段和求解.下面是代码.

#include<iostream>using namespace std;int ko[105][105];int b[105];int dp[105];int main(){int N,i,j,k,maxi,p,jo;cin>>N;for(i=1;i<=N;i++)for(j=1;j<=N;j++)cin>>ko[i][j];maxi=-1000000;for(i=1;i<=N;i++){memset(b,0,sizeof(b));for(j=i;j<=N;j++){for(k=1;k<=N;k++)b[k]=b[k]+ko[j][k];dp[1]=b[1];jo=dp[1];for(p=2;p<=N;p++){if(dp[p-1]>0)dp[p]=dp[p-1]+b[p];else dp[p]=b[p];if(dp[p]>jo)jo=dp[p];}if(jo>maxi)maxi=jo;}}cout<<maxi<<endl;return 0;}


 

原创粉丝点击