POJ 1050 Solution Report

解題報告

題目描述

鏈接: POJ1050

給定一個二維數(shù)組危融,求這個二維數(shù)組的子數(shù)組中所有元素相加和最大的那個子數(shù)組伞插,并且輸出這個子數(shù)組的和

輸入

第一行輸入一個整數(shù) N 代表二維數(shù)組的邊長
第二行輸入 N * N 個數(shù)代表數(shù)組的元素,以行優(yōu)先的方式來輸入

輸出

一個整數(shù)羽历,代表最大子數(shù)組的和,一個輸出獨占一行


解題思路

一開始拿到題的思路是構(gòu)建一個四位數(shù)組dp[i][j][k][l]來存儲以a[i][j]為左上角,以a[k][l]為右下角的子數(shù)組的和熔号,但是發(fā)現(xiàn)這樣的時間復雜度達到了O(n5),肯定會超時鸟整。

后來查看網(wǎng)上的思路引镊,發(fā)現(xiàn)可以轉(zhuǎn)換成一維最大子數(shù)組的和來求解:

假設子數(shù)組是從第 i 行到第 j 行,那么可以將 i 到 j 行壓縮成一行篮条,即 i 到 j 行的所有列各自相加弟头,問題就轉(zhuǎn)換成了一維最大子數(shù)組。

那么對于所有的 i 到 j 行涉茧,都壓縮一行求他們的最大子數(shù)組赴恨,所得結(jié)果之中最大的那個就是最終結(jié)果

Note:

  1. colSum[i][j]為第 i 列從 0 到 j 行的和
  2. 求一維數(shù)組的最大子數(shù)組偽代碼:
     for(int i=0;i<length;i++){
         sum += a[i];
         if(sum < 0){
             sum = 0;
         }
     }
    

代碼

#include <iostream>
#include <stdio.h>
#define MAX 100

using namespace std;

int a[MAX][MAX];
int colSum[MAX][MAX]={0};

int main(){
    int N;
    cin >> N;
    int result=-100000;
    for(int i=0;i<N;++i){
        for(int j=0;j<N;++j){
            scanf(" %d" , &a[i][j]);
            if(i==0){
                colSum[j][i] = a[i][j];
            }
            else {
                colSum[j][i] = colSum[j][i-1] + a[i][j];
            }
        }
    }
    for(int i=0;i<N;i++){
        for(int j=i;j<N;j++){
            int temp=0;
            for(int k=0;k<N;k++){
                if(i==0 || j==i){
                    temp += colSum[k][j];
                    if(temp < 0){
                        temp = 0;
                    }
                }
                else{
                    temp += colSum[k][j] - colSum[k][i-1];
                    if(temp < 0){
                        temp = 0;
                    }
                }
                if(temp > result){
                    result = temp;
                }
            }

        }
    }
    cout<<result<<endl;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伴栓,隨后出現(xiàn)的幾起案子伦连,更是在濱河造成了極大的恐慌,老刑警劉巖挣饥,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件除师,死亡現(xiàn)場離奇詭異,居然都是意外死亡扔枫,警方通過查閱死者的電腦和手機汛聚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來短荐,“玉大人倚舀,你說我怎么就攤上這事∪趟危” “怎么了痕貌?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長糠排。 經(jīng)常有香客問我舵稠,道長,這世上最難降的妖魔是什么入宦? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任哺徊,我火速辦了婚禮,結(jié)果婚禮上乾闰,老公的妹妹穿的比我還像新娘落追。我一直安慰自己,他們只是感情好涯肩,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布轿钠。 她就那樣靜靜地躺著巢钓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疗垛。 梳的紋絲不亂的頭發(fā)上症汹,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音继谚,去河邊找鬼烈菌。 笑死阵幸,一個胖子當著我的面吹牛花履,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挚赊,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诡壁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荠割?” 一聲冷哼從身側(cè)響起妹卿,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔑鹦,沒想到半個月后夺克,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡嚎朽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年铺纽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哟忍。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡狡门,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锅很,到底是詐尸還是另有隱情其馏,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布爆安,位于F島的核電站叛复,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扔仓。R本人自食惡果不足惜褐奥,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望当辐。 院中可真熱鬧抖僵,春花似錦、人聲如沸缘揪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹈垢,卻和暖如春慷吊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曹抬。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工溉瓶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谤民。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓堰酿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親张足。 傳聞我的和親對象是個殘疾皇子触创,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355