精華區beta CKEFGISC-1st 關於我們 聯絡資訊
hihi ... 我也寫了一個用迴圈暴力解的, 已經測試過結果是正確的 ... 至少用下面那些數字是正確的 有一些細節還沒有 take care到,像 max_sum 該 initise 成 -32767 (?) 最小的 signed integer ... array 可以改成 scanf 進來 呵呵,這是我裝 Visual Studio 後寫的第一個程式 ... 剛好拿來玩 VC++ 的 dubugger ... 真好玩 ... break point 跟自動 monitor 所有變數的功能很好用 剛才被一個小bug纏了一陣子,沒有這個 debugger 大概根本找不出來 終於可以跟gcc說再見了 ... Microsoft 亂凱的,送我們系上每人一套 Visual Stdio 6 Professional + NT4 都是正式版耶,不是「教育版」喔,這大概是我從 OEM 的 Win95 OSR2 以來第一次用到原版的 M$ ... #include <stdio.h> int conti_sum(int* start, int span); void main(void) { int start = 0, span = 0; int num[] = {4, 8, -23, 30, 24, -8, 19}; int array_size = 7; int max_sum = -999; // 小心最大值可能是負的 int max_start = 0; int max_span = 0; int i; for(start = 0; start < array_size; start++) { for(span = 0; span < (array_size - start); span++) { if (conti_sum(&num[start], span) > max_sum) { max_sum = conti_sum(&num[start], span); max_start = start; max_span = span; } } } printf("Max serise: "); for(i = 0; i <= max_span; i++) { printf("%d ", num[max_start + i]); } printf("\nSum = %d\n\n", conti_sum(&num[max_start], max_span)); } int conti_sum(int* start, int span) { int i, sum = 0; for(i=0; i <= span; i++) { // 注意 span 為 0 情況 sum += *(start + i); } return sum; } -- ※ 發信站: 批踢踢實業坊(ptt.twbbs.org) ◆ From: res-2549.usc.edu