全排列——九个数排列组合得到1/3

来源:互联网 发布:苹果电脑怎么打开软件 编辑:程序博客网 时间:2024/06/03 17:58

问题:九数组分数。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

0 0
原创粉丝点击