[問題] 最大子集合 函式裡面的BUG不知在哪
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
裡面的I變數一直都是6
餵入的資料(Input):
10
31 -41 59 26 -53 58 97 -93 -23 84
預期的正確結果(Expected Output):
照理講應該I要是5才對
錯誤結果(Wrong Output):
I=6
程式碼(Code):(請善用置底文網頁, 記得排版)
/*
題目:
Given an array of n real numbers, write a program of
finding the maximum sum in any contiguous subvector of the input.
Ex:
Input: 31, -41, 59, 26, -53, 58, 97, -93, -23, 84
Output: 187 (59+26+(-53)+58+97)
*/
#include <stdio.h>
#include <stdlib.h>
void MaxSubSum(int*);//設計者需自行撰寫之涵式
int main()
{
int *Data; //0資料筆數//1~Data[0]資料
/*輸入(設計者不需撰寫)*/
int* Input();
if( (Data = Input()) == NULL ){
return 1;
}
/*輸入結束*/
/*設計者自行撰寫部份*/
MaxSubSum(Data);
/*設計者自行撰寫部份結束*/
system("pause");
free(Data);
return 0;
}
void MaxSubSum(int *Data)
{
int Maxsum=0,
Tempsum=0,
Backtrace=1,
Subnum=0,
*Subvector=(int*)calloc(Data[0],sizeof(int)),
lessthanzero=0,
i,j;
for(i=1;i<=Data[0];i++){
Tempsum+=Data[i];
if(Tempsum>Maxsum){
if(lessthanzero){
Subnum=0;
lessthanzero=0;
}
for(j=Backtrace;j<=i;j++){
Subvector[Subnum++]=Data[j] ;
}
Maxsum=Tempsum;
Backtrace++;
}
if(Tempsum<=0){
lessthanzero=1;
Tempsum=0;
Backtrace++;
}
}
//印出結果
printf("Output is :(");
for(i=0;i<=Subnum-3;i++){
if(Subvector[i]<0){
printf("(%d)+",Subvector[i]);
}
else{
printf("%d+",Subvector[i]);
}
}
if(Subvector[Subnum-1]<0){
printf("(%d))",Subvector[Subnum-1]);
}
else{
printf("%d)",Subvector[Subnum-1]);
}
free(Subvector);
}
int* Input() //輸入函式(設計者不需撰寫)
{
FILE *fptr;
char FileName[256];
int DataNum,
*Data,
i;
printf("請輸入測試檔案: ");
scanf("%s", FileName);
if( (fptr = fopen(FileName, "r")) == NULL) {
printf("檔案開啟失敗\n");
return NULL;
}
fscanf(fptr, "%d", &DataNum);
Data = (int*)calloc(DataNum+1, sizeof(int));
Data[0] = DataNum;
for(i = 1; i <= Data[0]; i++) {
fscanf(fptr, "%d", &Data[i]);
}
printf("Input: %d", Data[1]);
for(i = 2; i <= Data[0]; i++) {
printf(", %d", Data[i]);
}
printf("\n");
fclose(fptr);
return Data;
}
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.13.158
→
04/10 16:54, , 1F
04/10 16:54, 1F
→
04/10 16:59, , 2F
04/10 16:59, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章