// 2008.07.30 Celia // Method: Dynamic Programming (DP) // Note: 最大連續和 #include <stdio.h> #define N 10000 int array[N], sum[N]; int main() { int i, n, max_sum; for( ; ; ) { scanf("%d", &n); if(n == 0) break; // 初始化(開始時的和為0) sum[0] = 0; max_sum = 0; for(i = 1; i <= n; i++) { // 輸入第i個元素 scanf("%d", &array[i]); // 如果加上前面可以得到較大的和,則加上前面 if(sum[i-1] > 0) sum[i] = sum[i-1] + array[i]; // 若加上前面反而比從自己開始往後加小,則不要加前面 else sum[i] = array[i]; // 更新最大值 if(sum[i] > max_sum) max_sum = sum[i]; } if(max_sum > 0) printf("The maximum winning streak is %d.\n", max_sum); else puts("Losing streak."); } return 0; }
發文作者:Yi | 2008 07 30
ACM Q10684 – The jackpot
發文作者:aikosenoo | 2008 07 30
[技巧] 在WordPress張貼程式碼
發文作者:aikosenoo | 2008 07 30
[演算法] 深度優先搜尋(DFS)
發文作者:aikosenoo | 2008 07 30
近期迴響