請問一個在C++中生成集合與運算的問題 |
答題得分者是:poaivy
|
Chengyan
一般會員 發表:5 回覆:8 積分:2 註冊:2007-03-23 發送簡訊給我 |
是這樣的,我有一個程式想要使用者輸入一個數字,然後生成數字內每一個數字為一集合,然後將所對應的集合作加總
當此加總數字等於所輸入的數字的時候,我將他Print出,而目前我的寫法如下: 這是我加總的區段 [code cpp] int value[20] ; int temp[20]; void setsum(int sum, int input, int num, int move) { if(sum == input) { printf("(%d",temp[0]); for(int i = 1; i printf(")\n"); return; } for(int i = move; i < input; i)<br /> { if(sum value[i] <= input) { temp[num ] = value[i]; setsum(sum value[i],input,num,i 1); num--; } } } [/code] 而這段是我生成集合的區段 [code cpp] void buildset(int input) { for(int i=0;i <= input;i ) { value[0]=1; value[i 1]=value[i] 1; } return; } [/code] 以下是我想執行的區段 [code cpp] int input; printf("輸入集合個數:"); scanf("%d", &input); buildset(input); setsum(0,input,0,0) [/code] 執行結果假若輸入值為10 結果是 (1,2,3,4) (1,2,7) (1,3,6) (1,4,5) (1,9) (2,3,5) (2,8) (3,7) (4,6) (10) 但是,我想要出現的是每一個集合中的數字都有出現而不是每一個位置只出現一次 所以我有嘗試在生成集合中加上一個迴圈,不過,他會造成加總後顯示的數值重複 那如果我想要有生成的數值中有 (1,1,1,1,1,1,1,1,1,1) 或是(6,4),(5,3,2),(4,3,2,1)而且不重複的話 我該如何做呢? |
poaivy
中階會員 發表:40 回覆:78 積分:53 註冊:2004-08-09 發送簡訊給我 |
|
Chengyan
一般會員 發表:5 回覆:8 積分:2 註冊:2007-03-23 發送簡訊給我 |
|
poaivy
中階會員 發表:40 回覆:78 積分:53 註冊:2004-08-09 發送簡訊給我 |
|
Chengyan
一般會員 發表:5 回覆:8 積分:2 註冊:2007-03-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |