凑算式
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
分析:dfs暴力法,简单题。
Source:
#include<cstdio>
using namespace std;
int count=0;
int ans[9];
bool vis[10];
bool judge(int ans[])
{
int a=ans[0];
int b=ans[1];
int c=ans[2];
int d=100*ans[3]+10*ans[4]+ans[5];
int e=100*ans[6]+10*ans[7]+ans[8];
if(a*c*e+b*e+c*d==10*c*e)
return true;
else
return false;
}
void dfs(int cur)
{
if(cur==9)
{
if(judge(ans))
{
count++;
}
return;
}
else
{
for(int i=1;i<=9;i++)
{
if(!vis[i])
{
vis[i]=true;
ans[cur]=i;
dfs(cur+1);
vis[i]=false;
}
}
}
}
int main()
{
dfs(0);
printf("%d\n",count);
return 0;
}