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