1344 走格子 (前綴和)
阿新 • • 發佈:2018-09-01
clu gray 初始 pac ++i ace ostream 有一個 ray 有編號1-n的n個格子,機器人從1號格子順序向後走,一直走到n號格子,並需要從n號格子走出去。機器人有一個初始能量,每個格子對應一個整數A[i],表示這個格子的能量值。如果A[i] > 0,機器人走到這個格子能夠獲取A[i]個能量,如果A[i] < 0,走到這個格子需要消耗相應的能量,如果機器人的能量 < 0,就無法繼續前進了。問機器人最少需要有多少初始能量,才能完成整個旅程。
例如:n = 5。{1,-2,-1,3,4} 最少需要2個初始能量,才能從1號走到5號格子。途中的能量變化如下3 1 0 3 7。
Input
Output
第1行:1個數n,表示格子的數量。(1 <= n <= 50000) 第2 - n + 1行:每行1個數A[i],表示格子裏的能量值(-1000000000 <= A[i] <= 1000000000)
輸出1個數,對應從1走到n最少需要多少初始能量。
思路:使用前綴和找出最小值即可
#include<iostream> #include<algorithm> using namespace std; #define ll long long ll num[50000]; int main() { int n; ll ans = 0; cin >> n; for (int i = 0; i < n; ++i) cin >> num[i]; for (int i = 1; i < n; ++i)num[i] += num[i-1]; int min = 0; for (int i = 0; i < n; ++i) if (num[min]>num[i])min = i; if (num[min] < 0)cout << (abs(num[min])) << endl; else cout << 0 << endl; }
1344 走格子 (前綴和)