题意:在一个有正负数的矩阵当中找一个子矩阵,使得这个子矩阵的sum最大,所谓sum就是子矩阵中所有数字的和。
思路:刚看到题目的时候觉的像是dp,因为以前做过类似的在矩阵中找最大正方形的题目,觉得是二维dp,又想到对于一个数,如何判断它是否应该存在于一 个矩阵当中,不仅涉及行,还涉及到列,而且还要搞的和最大,因为队友问过我那个hdu的1003题,那个题,我早以前做的时候其实也没理解透,后来又给他 讲了一遍,感觉这个题差不多就是那个的二维版本。
下面是代码:
View Code
#include#include #include #include #include using namespace std;const int maxn=105;int num[maxn][maxn],link[maxn];int ma,n;void data_in(){ memset(num,0,sizeof(num)); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%d",&num[i][j]); }}void cal(){ int ans=0; for(int i=1;i<=n;i++) { ans+=link[i]; if(ma
善待每一天,努力做好自己。
欢迎转载,注明出处。