问题:九数组分数。1, 2, 3...9 这九个数字组成一个分数,其值恰好为1/3,如何组合?编写程序输出所有的组合。
分析:九个数来说要组成三分之一只有一种可能,就是分子四位,分母五位,所以只需要对这九个数全排列,得到1/3输出即可。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; void perm(int str[],int k,int m) { if(k==m) { int a=str[0]*1000+str[1]*100+str[2]*10+str[3]; int b=str[4]*10000+str[5]*1000+str[6]*100+str[7]*10+str[8]; if(a*3==b)//注意此处应用乘法,而非除法 { printf("%d/%d\n",a,b); } //printf("\n"); } else { for(int i=k;i<=m;i++) { swap(str[k],str[i]); perm(str,k+1,m); swap(str[k],str[i]); } } } int main() { int num[]={1,2,3,4,5,6,7,8,9}; perm(num,0,9); return 0; }
运行结果:
5832/17496
5823/17469