位置子段最大子段和 hdu 1003 max sum ACM的开始
生活随笔
收集整理的這篇文章主要介紹了
位置子段最大子段和 hdu 1003 max sum ACM的开始
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
每日一貼,今天的內容關鍵字為位置子段
????這個標題的印象是較比刻深的,我的第一個動態規劃標題,也是ACM的開始。最大字段和是較比經典的動歸問題。求一個列序的最大子段和的關鍵點就在于斷判一個元素的歸屬問題,dp[i]表現含包第i個元素的最大子段和的結果,對于元素a[i],如果dp[i-1]>0那么加上dp[i-1]是有利益的,反之dp[i-1]就是贅累。這個標題有一個很好地問法,就是問你這個子段的肇端位置和束結位置。很簡單,錄記一下束結位置,然后根據你的動歸轉移方程和自己的思惟就可以失掉這個列序的肇端位置和束結位置。面下看代碼。
每日一道理信念是巍巍大廈的棟梁,沒有它,就只是一堆散亂的磚瓦;信念是滔滔大江的河床,沒有它,就只有一片泛濫的波浪;信念是熊熊烈火的引星,沒有它,就只有一把冰冷的柴把;信念是遠洋巨輪的主機,沒有它,就只剩下癱瘓的巨架。
#include<iostream> using namespace std; int a[100001],b[100001]; int main() {int T,i,k,max,n,j,e;cin>>T;for(i=1;i<=T;i++){cin>>a[0];for(k=1;k<=a[0];k++)cin>>a[k];max=a[1];b[1]=a[1];j=1;for(n=2;n<=a[0];n++){if(b[n-1]<0)b[n]=a[n];else b[n]=b[n-1]+a[n];if(b[n]>max){max=b[n];j=n;}}if(max<0)cout<<"Case "<<i<<":"<<endl<<max<<" "<<j<<" "<<j<<endl;else {for(e=j-1;e>0;e--)if(b[e]<0)break;cout<<"Case "<<i<<":"<<endl<<max<<" "<<e+1<<" "<<j<<endl;}if(i<T) cout<<endl;}return 0; }
????
?
文章結束給大家分享下程序員的一些笑話語錄: 問答
Q:你是怎么區分一個內向的程序員和一個外向的程序員的? A:外向的程序員會看著你的鞋和你說話時。
Q:為什么程序員不能區分萬圣節和圣誕節? A:這是因為 Oct 31 == Dec 25!(八進制的 31==十進制的 25)
總結
以上是生活随笔為你收集整理的位置子段最大子段和 hdu 1003 max sum ACM的开始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起播四个视频的AVS脚本
- 下一篇: linux系统服务器性能综合测试(Uni