看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
*/
/*#include<iostream.h>
int main()
{
int t[]={1,2,3,4,5,6,7,8,9};
for(int i=1;i<=9;i++)
}
*/
#include<stdio.h>
#include<string.h>
bool used[10]={false};
int a[10];
int getv(int s,int len)
{
int ret=0,i;
for(i=s;i<s+len;i++)ret=ret*10+a[i];
return ret;
}
void DFS(int deep,int n)
{
int i,x,b,c,d;
if(deep==n)
{
x=getv(0,2);
b=getv(2,2);
c=getv(4,2);
d=getv(6,3);
if(x>b)return ;
if(x*b==c*d)
{
printf("%d x %d = %d x %d\n",x,b,c,d);
}
return ;
}
for(i=1;i<10;i++)
{
if(used[i])continue;
used[i]=true;
a[deep]=i;
DFS(deep+1,n);
used[i]=false;
}
}
int main()
{
DFS(0,9);
return 0;
}