昨天想了很长时间,没找到好的解决方案!
#include <stdio.h> #include <stdlib.h> #include <conio.h>
void print_array(int *box,int size); void collector(int *box,int pos,int size); int inverse_sum(int *box,int size);
void main() { int box[9]={0};
collector(box,0,9); getch(); }
int inverse_sum(int *box,int size) { int i; int sum=0; for(i=0;i<size;i++) { sum += 1.0/box[i]; } return sum; }
void print_array(int *box,int size) { int i; for(i=0;i<size;i++) { printf("%4d",box[i]); } printf("\n"); }
void collector(int *box,int pos,int size) { if(pos < size && pos >= 0) { int i,j;
for(i=1;i<=100;i++) { box[pos]=i; pos++; collector(box,pos,size); pos--; } } else { if(inverse_sum(box,size) == 1) { print_array(box,size); } } } 三个数字的时候我测试过可以通过,不过9个数字是不是有点太慢了。。。。。。。。。。。。。。(可能会花几天几夜)
[此贴子已经被作者于2005-2-21 17:06:42编辑过]