POJ1050 To the Max

枚舉+DP
枚舉任意兩行之間的矩陣,求出每列的和,轉化爲一維數組求最大子段和。

代碼:
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    int n;
    int p;
    int a[150][150];
    int sum[150];
    int temp;
    int max_result =-1000;
    cin>> n;
    for(int i = 0; i< n; i++){
       for(int j = 0; j < n; j++){
           cin>> p;
           a[i][j] =p;
       }
    }
    for(int i = 0; i< n; i++) {
       memset(sum, 0, sizeof(sum));
       for(int j = i; j < n; j++){
           for(int k= 0; k < n; k++) {
              sum[k] += a[j][k];
              if(k == 0) {
                 temp = sum[k];
              } else {
                 if(temp > 0){
                     temp =temp + sum[k];
                 } else {
                     temp =sum[k];
                 }
              }
              max_result = max(max_result,temp);  
           }
          
       }
    }
    cout<< max_result<< endl;
// system("pause");
    return 0;
}


發佈了59 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章