/*
用1,2,3,…,9组成3个三位数abc,def和ghi,
每个数字恰好使用一次,
要 求abc:def:ghi=1:2:3。
按照“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;
}
用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;
}