1. 程式人生 > >(動態規劃DP演算法)To the Max

(動態規劃DP演算法)To the Max

15

解題報告:

這道題是求二維子陣列之和的最大值,詳細的解釋在程式設計之美2.15節有講過,我的演算法就是程式設計之美上提到的。

演算法思路主要就是列舉行,設b[i][j]代表第j列中前i行的資料之和。那麼,第m行到第n行間的第j列資料之和就是b[m][j]-b[n-1][j]。

這樣按行列舉後,題目就轉化為求一維子陣列之和的最大值,這裡的一維子陣列就是行間的各個列的資料之和所組成的陣列。

程式碼:

#include <iostream> #include <cstring> using namespace std; int a[105][105]; int b[105][105]; int main() {     int n,i,j,k,all=0,sum=0,max=0;     cin>>n;     for(i=1; i<=n; i++)         for(j=1; j<=n; j++)             cin>>a[i][j];     for(j=1;j<=n;j++)     {         b[1][j]=a[1][j];         b[0][j]=0;     }     for(j=1;j<=n;j++)     {         for(i=2;i<=n;i++)         {             b[i][j]=b[i-1][j]+a[i][j];         }     }     for(i=1;i<=n;i++)//從i行到j行加和     {         for(j=i;j<=n;j++)         {             all=b[j][1]-b[i-1][1];             sum=b[j][1]-b[i-1][1];             for(k=2;k<=n;k++)             {                 if(sum<0)                     sum=0;                 sum+=b[j][k]-b[i-1][k];                 if(sum>all)                     all=sum;             }             if(all>max)                 max=all;         }     }     cout<<max<<endl;     return 0; }

相關推薦

(動態規劃DP演算法To the Max

15 解題報告:這道題是求二維子陣列之和的最大值,詳細的解釋在程式設計之美2.15節有講過,我的演算法就是程式設計之美上提到的。演算法思路主要就是列舉行,設b[i][j]代表第j列中前i行的資料之和。那麼,第m行到第n行間的第j列資料之和就是b[m][j]-b[n-1][j]。這樣按行列舉後,題目就轉化

動態規劃】[POJ 1050]To the Max

就是最大矩陣和,如果直接爆搜複雜度就是O(n4)的所以進行優化,sum[i][j][k]表示在第i列到第j列的第k行的和,那麼就列舉i, j然後最大子段和,然後就變成O(n3)了, 反正n只有100就過

poj 1050-小白演算法練習 to the max 動態規劃

To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49226 Accepted: 26074 Description Given a two-dimensional arr

HDOJ 1081(ZOJ 1074 To The Max動態規劃

Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array o

動態規劃DP演算法實現全排列

/* * 全排列  * 無相同元素 * 1. 取第1個元素插入空字串, 1種情況  * 2. 取第2個元素插入長度為1的字串, 1*2 = 2種情況, 例如 'b'插入"a",可以在'a'前, 'a'後  * 3. 取第3個元素插入長度為2的字串, 2*3 = 6種情況, 例

華為校招第三題:字串變換最小費用(動態規劃DP問題

題目: 給出兩個字串A,B。將A字串轉化為B字串,轉化一共有兩種方式:刪除連續的n個字元,一次操作費用為2。增加連續的n個字元(增加的字元是什麼由你決定),一次操作費用為n+2。求把A變為B最小費用。 輸入: 第一行輸入一個正整數T(1 <= T &

【POJ-1050】To The Max動態規劃

ref script greate err sca max des eat tput To the Max Time Limit: 1000MS Memory Limit: 10000K Description Given a two-dimensional array

D - To the Max POJ - 1050 (動態規劃

D - To the Max  POJ - 1050  Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array

poj 1050 To the Max動態規劃處理二維最大子段和

2、題目大意: 給一個N,然後給定一個N*N的二維陣列,然後求一個子矩陣,使得其中的數加起來和最大 3、思路: 將二維陣列轉換成一維陣列,假設二維陣列是M行N列,那麼將二維陣列分成N條,用dp[i]記錄第i列的和(可以是任意連續長度,for迴圈就能實現),那麼將dp[i]

zoj1074 TO THE MAX動態規劃

1、問題描述 2、用陣列b表示陣列a的i~j行對應列元素的和,然後對陣列b計算最大欄位和,這就將二維動態規劃問題轉化為一維動態規劃的問題。 #include <iostream> #include<cstring> using nam

POJ 1050 To the Max(動態規劃)

Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the

hdu 1081 (最大子矩陣和dp To The Max

Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of

poj1050 To the Max (動態規劃)

題目意思: 給出一個矩陣。求出和最大的子矩陣,在解決這個問題的之前,首先看一下這個問題的一維問題,給出一個序列求最大子序列。滿足i<=i<=j<=n 求出最大的i-->j的和。

動態規劃To the Max

The input consists of an N * N array of integers. The input begins with a single positive integer N on a line by itself, indicating the size of the square

【視覺-立體視覺】全域性匹配演算法SGBM實現(含動態規劃DP詳解

最近一直在學習SGBM演算法,作為一種全域性匹配演算法,立體匹配的效果明顯好於區域性匹配演算法,但是同時複雜度上也要遠遠大於區域性匹配演算法。演算法主要是參考Stereo Processing by Semiglobal Matching and Mutual Informa

c++使用樸素遞迴演算法(自頂向下遞迴動態規劃dp(帶備忘的自頂向下,自底向上解決鋼條切割及執行例項結果

本博文資料來源於演算法導論第三版 動態規劃有兩種等價實現方法:帶備忘的自頂向下發(topDownWithMemoization),自底向上方法,付出額外的記憶體空間來節省計算時間,是典型的時空權衡,遞迴時會儲存每個子問題的解 長度n與對應價格p關係 1~10的對應最

演算法動態規劃(一動態規劃DP詳解

一、基本概念 動態規劃(dynamic programming)是運籌學的一個分支,是求解決策過程(decision process)最優化的數學方法。20世紀50年代初美國數學家R.E.Bellman等人在研究多階段決策過程(multistep d

藍橋杯 ALGO-3 演算法訓練 K好數 (動態規劃 DP

如果一個自然數N的K進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是K好數。求L位K進位制數中K好數的數目。例如K = 4,L = 2的時候,所有K好數為11、13、20、22、30、31、33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。

To the Max 二維dp(一維的變形

hole may b- separate 轉化 ima first lin con Description Given a two-dimensional array of positive and negative integers, a sub-rectangl

九章演算法高階班筆記6.動態規劃(下

區間類DP Stone Game Burst Ballons Scramble String 匹配類動規 Longest Common Subsequence Edit Distance K Edit Distance Distinct Subqu