日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PAT (Advanced Level) 1007 Maximum Subsequence Sum(最大连续子段和)

發布時間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT (Advanced Level) 1007 Maximum Subsequence Sum(最大连续子段和) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:求最大連續子段和,并輸出其第一項和最后一項,若結果為負數,輸出0,以及數組的第一項和最后一項

題目分析:簡單動態規劃,幫我復習了一下這種題目該怎么做。。動態規劃一直是我的弱項,所以借此鞏固一下基礎,還有就是,英語不好真難受,或者說是自己太想當然了,看到這個題目的第一眼,先看了一眼題目,是要求最大連續子段和,然后看了一眼樣例,以為是需要輸出結果,以及首項的位置和尾項的位置,興致勃勃的寫了一發交上去,只過了一個樣例??當時我就自閉了,感覺自己寫的沒問題,不管怎么改還是錯,去網上看了一眼題解,發現是需要輸出首項的值和尾項的值,而不是位置。。看到這個我都快哭了,改了半天竟然還是敗在了英語上,隨便一改交上去就A了。。

就是一個模板題,線性求最大連續子段和,也不用數組記錄,在線求就行了,記得記錄一下第一項和最后一項,最后萬一答案是負數的時候可以直接輸出了

相當于掛個模板吧,代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=110;int main() { // freopen("input.txt","r",stdin);int n;scanf("%d",&n);int mmax=-inf;//子序列之和int ans=-inf;//最大子序列之和int st,ed,temp;//最大子序列的首項、尾項,以及輔助記錄首項的tempint first,last;//整個數組的首項和尾項for(int i=1;i<=n;i++){int num;scanf("%d",&num);if(i==1)first=num;if(i==n)last=num;if(num>mmax+num)//若子序列之和變為負數,直接舍棄{mmax=num;temp=num;//記錄一下當前子序列的起點}else//否則繼續記錄mmax+=num;if(mmax>ans)//若當前子序列之和大于最大子序列之和,則更新答案{ans=mmax;st=temp;//順便更新一下當前子序列的起點ed=num;//以及當前的num為終點}}if(ans<0)//分情況輸出cout<<0<<' '<<first<<' '<<last<<endl;elsecout<<ans<<' '<<st<<' '<<ed<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的PAT (Advanced Level) 1007 Maximum Subsequence Sum(最大连续子段和)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。