01-復雜度2 Maximum Subsequence Sum (25 分)

Given a sequence of?K?integers {?N?1??,?N?2??, ...,?N?K???}. A continuous subsequence is defined to be {?N?i??,?N?i+1??, ...,?N?j???} where?1. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.

Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.

Input Specification:

Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer?K?(≤). The second line contains?K?numbers, separated by a space.

Output Specification:

For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices?i?and?j?(as shown by the sample case). If all the?K?numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.

Sample Input:

10
-10 1 2 3 4 -5 -23 3 7 -21

Sample Output:

10 1 4
#include<cstdio>
const int maxn = 100100;
int a[maxn] = {0};
int dp[maxn] = {0};
int s[maxn] = {0};int main(){int n;scanf("%d",&n);bool flag = false;for(int i = 0; i < n; i++){scanf("%d",&a[i]);if(a[i] >= 0) flag = true;}if(!flag){printf("0 %d %d",a[0],a[n-1]);return 0;}//scanf("%d",&n);dp[0] = a[0];for(int i = 1; i < n; i++){if(dp[i-1] + a[i] >= a[i]){dp[i] = dp[i-1]+a[i];s[i] = s[i-1];}else{dp[i] = a[i];s[i] = i;}}int max = dp[0];int k = 0;for(int i = 1; i < n; i++){if(dp[i] > max){max = dp[i];k = i;}}printf("%d %d %d",max,a[s[k]],a[k]);return 0;
}

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/10548671.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

進制轉換習題

題目&#xff1a;進制轉換 解法&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std; long long nums, k;void solution(long long nums, long long k) {vector<int> res;while(nums){long long curr nu…

02-線性結構2 一元多項式的乘法與加法運算 (20 分)

設計函數分別求兩個一元多項式的乘積與和。 輸入格式: 輸入分2行&#xff0c;每行分別先給出多項式非零項的個數&#xff0c;再以指數遞降方式輸入一個多項式非零項系數和指數&#xff08;絕對值均為不超過1000的整數&#xff09;。數字間以空格分隔。 輸出格式: 輸出分2行&…

《Leetcode | 02》

序號題目類型標記 863. 二叉樹中所有距離為 K 的結點 ★ 94. 二叉樹的中序遍歷 ★ 102. 二叉樹的層次遍歷 144. 二叉樹的前序遍歷 450. 刪除二叉搜索樹中的節點 701. 二叉搜索樹中的插入操作 700. 二叉搜索樹中的搜索 108. 將有序數組轉換為二叉搜索樹 701. …

C++基礎:各種輸入方法總結

輸入原理簡述&#xff1a; 程序的輸入都建有一個緩沖區&#xff0c;即輸入緩沖區。每次輸入過程是這樣的&#xff0c;當一次鍵盤輸入結束時會將輸入的數據存入輸入緩沖區&#xff0c;而cin函數直接從輸入緩沖區中取數據。正因為cin函數是直接從緩沖區取數據的&#xff0c;所以…

04-樹7 二叉搜索樹的操作集 (30 分)

本題要求實現給定二叉搜索樹的5種常用操作。 函數接口定義&#xff1a; BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Position FindMax( B…

02-線性結構3 Reversing Linked List (25 分)

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specifi…

03-樹1 樹的同構 (25 分)

給定兩棵樹T1和T2。如果T1可以通過若干次左右孩子互換就變成T2&#xff0c;則我們稱兩棵樹是“同構”的。例如圖1給出的兩棵樹就是同構的&#xff0c;因為我們把其中一棵樹的結點A、B、G的左右孩子互換后&#xff0c;就得到另外一棵樹。而圖2就不是同構的。 圖1 圖2 現給定兩棵…

【樹】104. 二叉樹的最大深度

題目 104. 二叉樹的最大深度 方法1 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr),…

Leetcode 206. 反轉鏈表

206. 反轉鏈表 解法1 class Solution { public:ListNode *reverseList(ListNode *head){if(!head || !head->next)return head;ListNode *p;p reverseList(head->next);head->next->next head;head->next nullptr;return p;} };解法2 /*** Definition for…

05-樹7 堆中的路徑 (25 分)

將一系列給定數字插入一個初始為空的小頂堆H[]。隨后對任意給定的下標i&#xff0c;打印從H[i]到根結點的路徑。 輸入格式: 每組測試第1行包含2個正整數N和M(≤)&#xff0c;分別是插入元素的個數、以及需要打印的路徑條數。下一行給出區間[-10000, 10000]內的N個要被插入一個初…

Leetcode 124.二叉樹中的最大路徑

解法1 解法 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* …

《UNIX環境高級編程》目錄

第一章&#xff1a;UNIX標準及實現 01 函數perror、strerror 第三章&#xff1a;文件I/O 01 C庫函數 02 文件描述符、函數open和openat 03 函數read、write、lseek 04 函數dup和dup2 第四章&#xff1a;文件和目錄 01 函數stat、fstat、fstatat和lstat 02 函數umask 03 函…

06-圖1 列出連通集 (25 分)

給定一個有N個頂點和E條邊的無向圖&#xff0c;請用DFS和BFS分別列出其所有的連通集。假設頂點從0到N?1編號。進行搜索時&#xff0c;假設我們總是從編號最小的頂點出發&#xff0c;按編號遞增的順序訪問鄰接點。 輸入格式: 輸入第1行給出2個整數N(0)和E&#xff0c;分別是圖的…

牛客網算法題題解

序號題目語言標記1 C解題報告 2 3 4字符串歸一化C解題報告

06-圖3 六度空間 (30 分)

“六度空間”理論又稱作“六度分隔&#xff08;Six Degrees of Separation&#xff09;”理論。這個理論可以通俗地闡述為&#xff1a;“你和任何一個陌生人之間所間隔的人不會超過六個&#xff0c;也就是說&#xff0c;最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示…

Linux網絡編程目錄

UNIX網絡編程目錄 1. TCP三次握手的第三次的 ack包丟失會怎樣&#xff1f; 2. inux網絡編程“驚群”問題總結

Linux高性能服務器編程

一、文件IO、標準IO 1. 2. 函數dup和dup2 三、進程 1. fork、vfork、clone 2. 函數wait、waitpid、孤兒進程、僵尸進程 3. 進程組 4. 會話 四、信號 1. 函數signal、sigaction 2. 函信號SIGCHLD 3. 函數kill、raise、abort、alarm 4. 信號集、sigprocmask、sigpending 五、…

07-圖4 哈利·波特的考試 (25 分)

哈利波特要考試了&#xff0c;他需要你的幫助。這門課學的是用魔咒將一種動物變成另一種動物的本事。例如將貓變成老鼠的魔咒是haha&#xff0c;將老鼠變成魚的魔咒是hehe等等。反方向變化的魔咒就是簡單地將原來的魔咒倒過來念&#xff0c;例如ahah可以將老鼠變成貓。另外&…

C++ Primer (二)目錄

第十五章&#xff1a;面向對象程序設計 1. 虛函數/2. 虛函數表剖析&#xff08;一&#xff09;3. 虛函數表剖析&#xff08;二&#xff09;4. 虛函數表剖析&#xff08;三&#xff09;

07-圖6 旅游規劃 (25 分)

有了一張自駕旅游路線圖&#xff0c;你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫一個程序&#xff0c;幫助前來咨詢的游客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的&#xff0c;那么需要輸出最便宜的一條路徑。 輸入格式: 輸…