hdu 1081(最大子矩陣和)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1081
先求每列第一個元素到每個元素的和 s[i][j] = s[i-1][j] + num[i][j];
在求第i行到 j 行的每列的和(1<= j < i <= n)t[k] = s[i][k] - s[j][k] (k表示這行第幾列元素)
每求出一組t[n],求一次最大欄位和
#include <stdio.h> #include <string.h> int s[110][110]; int num[110][110]; int t[110]; int dp[110]; int max(int a,int b) { return a>b?a:b; } int main() { int n,tmp; int i,j,k; while(~scanf("%d",&n)) { tmp = -0xffff; memset(s,0,sizeof(s)); for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { scanf("%d",&num[i][j]); s[i][j] = s[i-1][j] + num[i][j]; } } for(i = 1; i <= n; i++) { for(j = 0; j < i; j++) { for(k = 1; k <= n; k++) { t[k] = s[i][k]-s[j][k]; dp[k] = max(dp[k-1]+t[k],t[k]); if(dp[k] > tmp) tmp = dp[k]; } } } printf("%d\n", tmp); } return 0; }
相關推薦
HDU-1081-“最大子矩陣和”---- 暴力優化:從6次冪到3次冪
題目連結: 原題如下: Problem Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-a
hdu 1081(最大子矩陣和)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1081 先求每列第一個元素到每個元素的和 s[i][j] = s[i-1][j] + num[
HDU 1081 最大子陣和
Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1 x 1 or
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
hdu 1081/poj 1050 最大子矩陣和(dp)
換成谷歌瀏覽器以後終於可以黏貼程式碼了,更新以後的markdown真心難用。。。 dp問題,先把給定的二維矩陣壓縮,變成一維矩陣,如此即可變成hdu1003,用動態規劃的思路求解即可 #include<iostream> #include<cm
POJ 1050 / HDU 1081 To the Max(最大子矩陣和)
題目連結: 題意:給出一個n*n的矩陣,正負均有。求一個子矩陣使得該子矩陣的和儘可能的大。 思路:類似於最大子段和,即將前i行至前j行的矩陣壓縮成一行,利用一個數組c,c[k]表示第k列從第i行到第j行的和,接下來只需對陣列c求最大子段和,結果即為第i行到第j行中的最大
hdu 1081 To The Max(最大子矩陣和)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7533 Accepted Submission(s)
hihocoder 1580 dp最大子矩陣和
ima freopen tdi com hihocode images namespace ans open 題意: 給出n*m的矩陣求最大子矩陣和,要求必須把矩陣中的某一個元素替換成p 代碼: //求最大子矩陣和,容易想到壓縮之後dp但是這道題要求必須替換一
poj1050(最大子矩陣和)
algorithm int image bsp color const turn amp div 設a[i][j]表示將矩陣壓縮成線性序列的前綴和 那麽我們在做dp時枚舉起點 i 與終點j 最內層枚舉行號,那麽可以一行一行的累加, 最後更新答案即可 #include&l
51Nod 1051 - 最大子矩陣和(DP)
題目連結 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051 【題目描述】 一個M*N的矩陣,找到此矩陣的一個子矩陣,並且這個子矩陣的元素的和是最大的,輸出這個最大的值。 例如:3×3的矩陣: -1 3
最大子矩陣和---(dp)
題目描述 一個M*N的矩陣,找到此矩陣的一個子矩陣,並且這個子矩陣的元素的和是最大的,輸出這個最大的值。 例如:3*3的矩陣: -1 3 -1 2 -1 3 -3 1 2 和最大的子矩陣是: 3 -1 -1 3 1 2 Input 第1行:M和N,中間用
1634(最小的最大子矩陣和)
寫到要瘋掉,這種需要細節的題目得在精神狀態比較好的時候寫。 #include<iostream> #include<cstdio> #include<algorithm
演算法優化:最大子段和,最大子矩陣和,一維,二維情況分析,動態規劃
最大子段和,前面b[j]理解的是:終點在j的最大連續子段和,及從k:j最大和 是對b[j]進行動態規劃,從k:j最大和:取決於k:j-1的最大和,他大於0的話,就為k:j-1的最大和+arr[j],他小於0的話,就只是arr[j] 終點在j一共有n種情況,原問題只是求b[
POJ 1050 To the Max 最大子矩陣和(二維的最大欄位和)
傳送門: To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 52306 Accepted: 27646 Description Given a two-dimensional array of positive
hdu1559 最大子矩陣和
最大子矩陣 Time Limit: 30000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4459 Accepted Submis
ZOJ 1074/POJ 1050 To the Max (最大子矩陣和)
首先要學會最大子段和的求法,如下 int DP(int a[],int n) { int i,f[101];//f[i]表示以i結尾子段最大和 int max = -200000000; for(i =
51Nod 1051 最大子矩陣和 (最大子段和變形)
基準時間限制:2 秒 空間限制:131072 KB 分值: 40 難度:4級演算法題 收藏 關注 一個M*N的矩陣,找到此矩陣的一個子矩陣,並且這個子矩陣的元素的和是
[HDU1559][DP]最大子矩陣和
輸入資料的第一行為一個正整數T,表示有T組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示給定的矩形有m行n列。接下來這個矩陣,有m行,每行有n個不大於1000的正整數。
ACM-最大子矩陣和
最大子矩陣和問題是對最大子序列和問題的擴充套件,即從一維擴充套件到了二維。但是解決此問題的方法和原來的方法並沒有太大的差別,這裡就以同樣的動態規劃的實錄思路來求解此問題。原來subSum[i]代表包含ai並且以ai結束的子序列的最大和,狀態轉移方程為subSum[i+1]
poj1050(動態規劃+最大子矩陣和)
題目要求是輸入一個N*N的矩陣,然後求出這個矩陣的最大子矩陣和,在一維空間中是求最大連續字串和,這題也算是它在二維空間裡的一個擴充套件吧…… 這個動歸先求第i行第j列在這一行從1到j的最大字串和,然後