2016蓝桥省赛第三题转载
作者:
snkz5qing
,
2022-02-25 22:36:18
,
所有人可见
,
阅读 182
//A + B/C + DEF/GHI = 10 凑算式 标记一下1-9个数,再搜索一下就好了
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
bool visited[10];//标记一下1~9个数
int ans[10];//?ans存每一个数,这里数组容量填10或者100都可以
int k=0;//?
int coun=0;//解法数目
bool check()
{
int x=ans[1]/ans[2];//这里为什么要用double型??
int y=(ans[3]*100+ans[4]*10+ans[5])/(ans[6]*100+ans[7]*10+ans[8]);
if(ans[0]+x+y==10)
return 1;//写true
else
return 0;//写false;
}
void dfs(int depth)
{
if(depth==9)//总共选九个数,选完了之后方案数加1,然后回溯,大于等于9或者写等于9也可以
{
if(check())//如果满足条件
{
coun++;//方案数目++;
}
return;
}
for (int i = 1; i < 10; i ++ )
{
if(!visited[i])
{
visited[i]=true;
ans[k++]=i;//
dfs(depth+1);
visited[i]=false;
k--;//这里恢复现场不写就容易错
}
}
}
int main()
{
dfs(0);
cout << coun<<endl;
return 0;
}