#30003: 顯示stack smashed 請各路高手幫忙


duke22909@gmail.com (hanchen chang)

學校 : 不指定學校
編號 : 119479
來源 : [123.194.181.101]
最後登入時間 :
2022-04-21 22:39:31
a981. 求和問題 | From: [118.233.248.11] | 發表日期 : 2022-04-21 00:08

#include <iostream>

// 窮舉法 

void sum_of_num(int ar[], int start, int len, int sum, int goal, int chec[], int tempindex)

{

static int found = 0;

for(int i = start; i<= len; i++)

{

//std::cout << ar[i] << " ";

 

sum+= ar[i];

 

if(sum > goal)

{

return ;

}

if(sum == goal)

{

//std::cout << " : found \n";

found = 1;

chec[tempindex] = ar[i];

for(int ind = 0; ind<= tempindex; ind++)

{

std::cout << chec[ind] << " ";

}

std::cout << "\n";

return ;

}

chec[tempindex] = ar[i];

sum_of_num(ar, i+1, len, sum, goal, chec, tempindex+1);

sum-=ar[i];

 

 

}  

if(!found && !tempindex)

{

std::cout << -1 << "\n";

return;

}

 

}

int main()

{

        int integer_num, temp, sumgoal;

while(std::cin >> integer_num >> sumgoal)

{

int arr[integer_num], check[] = {0}, 

size = sizeof(arr) / sizeof(arr[0]);

for(int ind = 0; ind< integer_num; ind++)

{

std::cin >> arr[ind];

}

for(int sort = 0; sort< integer_num - 1; sort++)

{

for(int forward = sort+1; forward< integer_num; forward++)

{

if(arr[sort] > arr[forward])

{

temp = arr[sort];

arr[sort] = arr[forward];

arr[forward] = temp;

}

}

}

sum_of_num(arr, 0, size-1, 0, sumgoal, check, 0);

}

return 0;

 

}

自己用測資跑似乎可以  但是線上測的結果為 stack smashed  我認為應該是錯在如果一組數字每一個加起來一定小於m  就回到index = 0 並印出 -1  不用繼續檢查  請高手幫忙謝謝

 
#30007: Re:顯示stack smashed 請各路高手幫忙


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a981. 求和問題 | From: [110.26.168.226] | 發表日期 : 2022-04-21 10:03

int arr[integer_num], check[] = {0},


自己用測資跑似乎可以  但是線上測的結果為 stack smashed  我認為應該是錯在如果一組數字每一個加起來一定小於m  就回到index = 0 並印出 -1  不用繼續檢查  請高手幫忙謝謝


我的電腦上也會stack smashing detected,你的check長度只有1?

 
#30012: Re:顯示stack smashed 請各路高手幫忙


duke22909@gmail.com (hanchen chang)

學校 : 不指定學校
編號 : 119479
來源 : [123.194.181.101]
最後登入時間 :
2022-04-21 22:39:31
a981. 求和問題 | From: [140.136.150.1] | 發表日期 : 2022-04-21 12:09

int arr[integer_num], check[] = {0},


自己用測資跑似乎可以  但是線上測的結果為 stack smashed  我認為應該是錯在如果一組數字每一個加起來一定小於m  就回到index = 0 並印出 -1  不用繼續檢查  請高手幫忙謝謝


我的電腦上也會stack smashing detected,你的check長度只有1?


原來是陣列長度的問題 我把陣列長度設為integer_num 就不會有stack smashing detected  但是第二筆測資沒過

 
#30013: Re:顯示stack smashed 請各路高手幫忙


duke22909@gmail.com (hanchen chang)

學校 : 不指定學校
編號 : 119479
來源 : [123.194.181.101]
最後登入時間 :
2022-04-21 22:39:31
a981. 求和問題 | From: [140.136.150.1] | 發表日期 : 2022-04-21 12:21

int arr[integer_num], check[] = {0},


自己用測資跑似乎可以  但是線上測的結果為 stack smashed  我認為應該是錯在如果一組數字每一個加起來一定小於m  就回到index = 0 並印出 -1  不用繼續檢查  請高手幫忙謝謝


我的電腦上也會stack smashing detected,你的check長度只有1?


原來是陣列長度的問題 我把陣列長度設為integer_num 就不會有stack smashing detected  但是第二筆測資沒過


您的答案為 : 10 90

正確答案為 : 10 40 50

 
#30014: Re:顯示stack smashed 請各路高手幫忙


duke22909@gmail.com (hanchen chang)

學校 : 不指定學校
編號 : 119479
來源 : [123.194.181.101]
最後登入時間 :
2022-04-21 22:39:31
a981. 求和問題 | From: [140.136.150.1] | 發表日期 : 2022-04-21 12:35

int arr[integer_num], check[] = {0},


自己用測資跑似乎可以  但是線上測的結果為 stack smashed  我認為應該是錯在如果一組數字每一個加起來一定小於m  就回到index = 0 並印出 -1  不用繼續檢查  請高手幫忙謝謝


我的電腦上也會stack smashing detected,你的check長度只有1?


原來是陣列長度的問題 我把陣列長度設為integer_num 就不會有stack smashing detected  但是第二筆測資沒過


您的答案為 : 10 90

正確答案為 : 10 40 50

 
題目應該是一直呼叫函數直到 和 等於 m 接者return 回前一個元素 繼續下一輪迴圈

重複這個流程  應該是會先輸出 和 等於 m 且  比較小的數字 

以n = 4, m = 100  10 40 50 90 來說

應該先輸出

10 40 50

再輸出

10 90  但是第二筆測資好像倒過來   

 

 
#30016: Re:顯示stack smashed 請各路高手幫忙


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a981. 求和問題 | From: [110.26.168.226] | 發表日期 : 2022-04-21 13:59


您的答案為 : 10 90

正確答案為 : 10 40 50

 
題目應該是一直呼叫函數直到 和 等於 m 接者return 回前一個元素 繼續下一輪迴圈

重複這個流程  應該是會先輸出 和 等於 m 且  比較小的數字 

以n = 4, m = 100  10 40 50 90 來說

應該先輸出

10 40 50

再輸出

10 90  但是第二筆測資好像倒過來   

 


翻了一下解題記錄,發現我之前也跟你錯同樣的地方...

原因在於那些整數可能會重複,這時候輸出的次數就要增加,例如測資是

5 100
10 40 50 50 90

10 40 50就要輸出兩次

 

 
#30018: Re:顯示stack smashed 請各路高手幫忙


duke22909@gmail.com (hanchen chang)

學校 : 不指定學校
編號 : 119479
來源 : [123.194.181.101]
最後登入時間 :
2022-04-21 22:39:31
a981. 求和問題 | From: [140.136.150.1] | 發表日期 : 2022-04-21 15:15


您的答案為 : 10 90

正確答案為 : 10 40 50

 
題目應該是一直呼叫函數直到 和 等於 m 接者return 回前一個元素 繼續下一輪迴圈

重複這個流程  應該是會先輸出 和 等於 m 且  比較小的數字 

以n = 4, m = 100  10 40 50 90 來說

應該先輸出

10 40 50

再輸出

10 90  但是第二筆測資好像倒過來   

 


翻了一下解題記錄,發現我之前也跟你錯同樣的地方...

原因在於那些整數可能會重複,這時候輸出的次數就要增加,例如測資是

5 100
10 40 50 50 90

10 40 50就要輸出兩次

 

謝謝提醒   終於ok了

 
ZeroJudge Forum