演算法資料結構試題——在陣列中找出已知和的組成數

鍾超發表於2011-03-16

已知有12個數
現在知道其中的幾個數的和
要求知道這個和是哪幾個數的和
把所有的組合都找出來
謝謝先,幫朋友問的


/* *不知道符不符合樓主要求,測試了,編譯可通過。 */ #include <stdio.h> int main(void) { int sum(int [], int); int output(int [], int); /*已知的12個整數*/ int num[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int tag = 45; /*已知的和值*/ int mod; /*mod第12位對應12個整數,一共有4095種情況*/ for(mod = 1; mod < 4096; ++mod) { if(tag == sum(num, mod)) { output(num, mod); printf("\n"); } } return 0; } /*計算mod情況下的和*/ int sum(int num[], int mod) { int tmp_avail[12]; int tmp_sum = 0; int i; for(i = 11; i >= 0; --i) { tmp_avail[i] = (mod >> i) % 2; tmp_sum += tmp_avail[i] * num[i]; } return tmp_sum; } /*輸出符合要求的整陣列*/ int output(int num[], int mod) { int tmp_avail[12]; int i; for(i = 0; i < 12; ++i) { tmp_avail[i] = (mod >> i) % 2; if(tmp_avail[i] == 1) { printf("%d ", num[i]); } } return 1; }

相關文章