//用1,2,3......9组成三个数abc,def,ghi,每个数字恰好使用一次,
//要求abc/def/ghi=1/2/3
//我的方法,广度优先搜索
#include <stdio.h>
#include <stdlib.h>
int dight[10];//从1到9,abcdefghi
int book[10]={0};//标记1到9
int number[3];//存abc,def,ghi
void dfs(int location)
{
if(location==10){
for(int i=0;i<=2;i++)
number[i]=dight[i*3+1]*100+dight[i*3+2]*10+dight[i*3+3];
if(number[0]*2==number[1]&&number[0]*3==number[2]){
printf("%d %d %d\n",number[0],number[1],number[2]);
}
return;
}
for(int i=1;i<=9;i++){
if(book[i]==0){
dight[location]=i;
book[i]=1;
dfs(location+1);
book[i]=0;
}
}
return;
}
int main()
{
dfs(1);
return 0;
}
排列
最新推荐文章于 2023-11-05 14:17:54 发布