1. 程式人生 > >POJ-1050 動態規劃最大子段和最大子陣

POJ-1050 動態規劃最大子段和最大子陣

1、最大子段

由於最大子段不可能以負數或負數段開頭,可以以此得到演算法

int max(int a[],int n)
{
    int sum,maxsum;
    int i ;
    sum = maxsum = 0;
    for(i = 0;i<n;i++)
    {
        sum +=a[i];
        if(sum>maxsum)//子段大於最大值,更新最大值
            maxsum = sum;
        else if(sum<0)//子段小於0,則歸零
            sum = 0;
    }
    return
maxsum; } ### 2、最大子陣 ### 把二維的矩陣化作一維矩陣,每一行加為一個數就形成了一個一維陣列,對這個一維陣列求最大子段,就能得到結果

int rec[200][200];

int max(int n)
{
int i,j,k,p;
int maxnum,sum,_max=-1270000;
for(i=0;i

相關推薦

POJ-1050 動態規劃大子大子

1、最大子段 由於最大子段不可能以負數或負數段開頭,可以以此得到演算法 int max(int a[],int n) { int sum,maxsum; int i ; sum = maxsum = 0; for(i =

hdu 1024 Max Sum Plus Plus(動態規劃+m子大值)

Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you ar

Max Sum Plus Plus (動態規劃+m子大值)

Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you

動態規劃求解矩陣累計大的路徑

/** * 有一個 M x N 的矩陣,其中每個格子裡面都有特定的錢。 * 左上角走到右下角,只能向右或者向下走,問怎麼走才能撿到最多的錢。 * 輸出撿錢的路徑。 * 解析: 動態規劃。 首先找到子結

poj 1050 To the Max(動態規劃處理二維大子

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

[C++] 動態規劃之矩陣連乘、長公共子序列、大子長單調遞增子序列

每次 種子 () return 避免 amp 可能 text com 一、動態規劃的基本思想   動態規劃算法通常用於求解具有某種最優性質的問題。在這類問題中,可能會有許多可行解。每一個解都對應於一個值,我們希望找到具有最優值的解。   將待求解問題分解成若幹個子問題,先求

動態規劃 ------大子

動態規劃 函數 cnblogs png 規劃 font 3-9 .cn -- 1.最大子段和的問題描述 2.動態規劃的求解: 3.優化函數的遞推方程 4.動態規劃求解偽碼 5.動態規劃求解的小結: 動態規劃的

51Nod1050 迴圈陣列大子動態規劃

這題區間是可以迴圈的,如果不迴圈的狀態轉移方程是 if(dp[i-1]>0)   dp[i]=dp[i-1]+a[i]; else   dp[i]=a[i]; 現在題目要求是可以迴圈,分為兩種情況: 1、沒有迴圈,找到了最大的子段。 2、迴圈了,找到了最大的子段。 第一

大子長遞增子序列(貪心與動態規劃

話不多說先上程式碼。。。。。  最大子段和 題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入輸出格式 輸入格式:   第一行是一個正整數NNN,表示了序列的長度。 第二行包含NNN個絕對值不大於100001000010000的

[洛谷]P1115 大子 (#動態規劃 -1.6)

題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入輸出格式 輸入格式: 第一行是一個正整數NN,表示了序列的長度。 第二行包含NN個絕對值不大於10000的整數Ai​,描述

演算法優化:大子大子矩陣,一維,二維情況分析,動態規劃

最大子段和,前面b[j]理解的是:終點在j的最大連續子段和,及從k:j最大和 是對b[j]進行動態規劃,從k:j最大和:取決於k:j-1的最大和,他大於0的話,就為k:j-1的最大和+arr[j],他小於0的話,就只是arr[j] 終點在j一共有n種情況,原問題只是求b[

大子問題:蠻力、遞迴及動態規劃

問題描述 求一個序列的最大子段和即最大連續子序列之和。例如序列[4, -3, 5, -2, -1, 2, 6, -2]的最大子段和為11=[4+(-3)+5+(-2)+(-1)+(2)+(6)]。 1. 蠻力演算法 思想:從序列首元素開始窮舉

動態規劃大子;溫故而知新-。-;這個動規公式找的很聰明;

1. #include <iostream> 2. using namespace std; 3. 4. class MaxSum 5. { 6. private: 7. int maxS

動態規劃 大子

mes 最小 最大的 iostream ace 動態規劃 strong 最大值 ffffff 子段與子段和的概念:   給定一個由數字組成的序列,其中一段連續的序列稱為一個子段(假設非空),子段中所有的數字和就是為 子段和 例子:    {1,2,3,4} ,  

51Nod 1050 循環數組大子 | DP

urn F12 int ges href 中間 art space style Input示例 6 -2 11 -4 13 -5 -2 Output示例 20 分析: 有兩種可能,第一種為正常從[1 - n]序列中的最大子字段和;第二種為數組的total_sum -

3981 動態大子

void sam tdi mat 兩個 for inline -h push 題目描述 Description 題目還是簡單一點好... 有n個數,a[1]到a[n]。 接下來q次查詢,每次動態指定兩個數l,r,求a[l]到a[r]的最大子段和。 子段的意思是連續非空

51nod 1050 循環數組大子【環形DP/大子/正難則反】

pre 不但 spa 個數 ace lld 時間 lin bsp 1050 循環數組最大子段和 基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關註 N個整數組成的循環序列a[1],a[2

codevs 3981 動態大子(線段樹)

輸入 typedef fault namespace 一行 scrip img sum spl 題目傳送門:codevs 3981 動態最大子段和 題目描述 Description 題目還是簡單一點好... 有n個數,a[1]到a[n]。 接下來q次查詢,每次動

動態大子

build res \n names d+ using 最大子段和 mes its #include <bits/stdc++.h> using namespace std; const int maxn=5e5+10; inline int read(){

長子動態規劃

package 實驗三; public class 最大子段和 { public static void main(String[] args) { C c=new C(); c.run(); c.show(); } } class C{ int [] a= {-2,11,-