题目描述
把1,2,3,4,5,6,7,8,9,组成三个三位数(每个数只能用一次),第二个数是第一个数的2倍,第三个数是第一个数的3倍,这三个三位数各是多少?答案可能有很多组,请按第一个数的升序顺序输出每组的三个三位数。
输入
无
输出
输出所有满足条件的三位数组合,按第一个数的升序顺序输出。
样例输出 Copy
192 384 576 .........
#include<iostream>
using namespace std;
const int N=10000;
int path[N];
bool vis[N];
void dfs(int u)
{
if(u==9)
{
int ans1=path[0]*100+path[1]*10+path[2];
int ans2=path[3]*100+path[4]*10+path[5];
int ans3=path[6]*100+path[7]*10+path[8];
if((ans1*2==ans2)&&(ans1*3==ans3))
{
cout<<ans1<<' '<<ans2<<' '<<ans3<<endl;
}
return ;
}
for(int i=1;i<=9;i++)
{
if(!vis[i])
{
path[u]=i;
vis[i]=true;
dfs(u+1);
vis[i]=false;
}
}
}
int main()
{
dfs(0);
return 0;
}