1. 程式人生 > >zoj1074 TO THE MAX(動態規劃)

zoj1074 TO THE MAX(動態規劃)

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; }