【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
生活随笔
收集整理的這篇文章主要介紹了
【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
讀題!讀題!
- 題上讓輸出最長子串起始位置和終止位置的數(shù)字,而不是角標(biāo)
- 如果每個(gè)數(shù)都是負(fù)數(shù),則輸出0
不要看著測試用例去猜題意,要先把題完整看完了再開始碼!
如果自己的測試用例全都通過了,題目的測試用例幾乎都沒通過,不要懷疑,一定是理解錯(cuò)題意了!再看一遍題。。。
題解C++
#include<iostream> using namespace std;//最長公共子串問題 int main() {int total;int arr[10001];cin >> total;for (int i = 0; i < total; i++) {cin >> arr[i];}int sum = 0;int max = arr[0];int maxFrom = 0, maxTo = 0;int curFrom = 0;for (int i = 0; i < total; i++) {sum += arr[i];if (sum > max) {//如果當(dāng)前sum大于max,則記錄max = sum;maxFrom = curFrom;maxTo = i;}else if (sum < 0) {//如果當(dāng)前sum<0,則下一個(gè)sum從當(dāng)前開始從0計(jì)算curFrom = i + 1;sum = 0;}}if (max < 0)//注意讀題 如果都為負(fù) 則輸出0 以及開頭結(jié)尾的數(shù)字cout << 0 << " " << arr[0] << " " << arr[total - 1];elsecout << max << " " << arr[maxFrom] << " " << arr[maxTo];system("pause"); }總結(jié)
以上是生活随笔為你收集整理的【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Servlet】Listener监听器
- 下一篇: 【PAT甲级 多项式相乘】1009 Pr