12个正整数,每个数都带3,如3,13,23等,求其和为100的组合,编程实现!
利用递归来遍历各种组合,同时为避免组合之间的重复,限定后面的数不小于前面的数,设计程序如下:
int a[] = { 3, 13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 53, 63 };
int b[12] = { 0 };
int getResult(int num, int sum,int k) {
if (num == 12) {
if (sum == 0) {
for (int i = 0; i < 12; i++) {
cout << b[i] << " ";
}
cout << endl;
return 0;
} else {
return -1;
}
}
num = num + 1;
for (int i = k; i < sizeof(a) / sizeof(int); i++) {
b[num - 1] = a[i];
getResult2(num, sum - a[i],i);
}
return -1;
}
int main(){
getResult(0,100,0);
}