zoj1074 TO THE MAX(動態規劃)
阿新 • • 發佈:2019-01-11
1、問題描述
2、用陣列b表示陣列a的i~j行對應列元素的和,然後對陣列b計算最大欄位和,這就將二維動態規劃問題轉化為一維動態規劃的問題。
#include <iostream>
#include<cstring>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define N 101
int main(int argc, char** argv) {
int a[N][N];
int b[N];
int n;
int i,j,k;
while(cin>>n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
cin>>a[i][j];
}
int max=-1000;
for(int i=0;i<n;i++){
memset(b,0,sizeof(b));
for(j=i;j<n;j++){
int sum=0;
for (k=0;k<n;k++){
b[k]+=a[j][k];
if(sum<0)sum=b[k];
if(sum>max)max=sum;
}
}
}
cout<<max<<endl;
}
return 0;
}