HDU 1003——Max Sum(动态规划)
生活随笔
收集整理的這篇文章主要介紹了
HDU 1003——Max Sum(动态规划)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1003
?
題目大意:歷遍所有數字,找出最大字段和。
?
解題思路:
t和n:記錄循環次數和每一段有多少個數字
temp,now,max:temp存放臨時讀取的變量,now代表現在和,max代表當前最大和,如果前面相加后是負數,而后一位是正數,則更新起點位置。
?
?
代碼如下:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int t,n,temp,pos1,pos2,max,now,x,i,j; 7 scanf("%d",&t); 8 for (i=1;i<=t;i++) 9 { 10 scanf("%d%d",&n,&temp); 11 now=max=temp; 12 pos1=pos2=x=1; 13 for (j=2;j<=n;j++) 14 { 15 scanf("%d",&temp); 16 if (now+temp<temp) //如果前面是負數 17 now=temp,x=j; 18 else 19 now+=temp; 20 21 if (now>max) 22 max=now,pos1=x,pos2=j; 23 } 24 printf("Case %d:\n%d %d %d\n",i,max,pos1,pos2); 25 if (i!=t) 26 printf("\n"); 27 } 28 return 0; 29 }?
轉載于:https://www.cnblogs.com/shadervio/p/5758328.html
總結
以上是生活随笔為你收集整理的HDU 1003——Max Sum(动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis两种持久化方式(RDBAOF)
- 下一篇: WKWebView的使用与JS交互详细解