算法竞赛入门经典习题2-6

/*
用1,2,3,…,9组成3个三位数abc,def和ghi,
每个数字恰好使用一次,
要 求abc:def:ghi=1:2:3。
按照“abc def ghi”的格式输出所有解,

每行一个解


思路:如果首先要保证每个数字都用一次,那么这个题就会变得很麻烦,所以就先让abc,def,ghi产生倍数关系然后对

这三个数字每一位上的数字进行标记,然后测试九个数字是否都被标记过,如果都被标记过则输出

代码如下:

*/


#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int main()
{
    int abc,def,ghi;


    for(int i=123;i<329;i++)
    {
        bool arr[105]={false};
        abc=i;
        arr[abc/100]=arr[abc/10%10]=arr[abc%10]=true;//标记三个数字
        def=2*abc;
        arr[def/100]=arr[def/10%10]=arr[def%10]=true;//标记三个数字
        ghi=3*abc;
        arr[ghi/100]=arr[ghi/10%10]=arr[ghi%10]=true;//标记三个数字
        int j;
        for(j=1;j<10;j++)
        {
            if(!arr[j])
            {
                break;
            }
        }
        if(j==10)
            cout<<abc<<" "<<def<<" "<<ghi<<endl;
    }






    cout<<endl<<"---------------------------------"<<endl;
    cout<<"程序运行时间为:"<<(double)clock()/CLOCKS_PER_SEC<<endl;
    cout<<"---------------------------------"<<endl;


}

猜你喜欢

转载自blog.csdn.net/intmainhhh/article/details/80396615