算式900(2017蓝桥杯省赛c组题目)
2018-03-11 23:40
423 查看
小明的作业本上有道思考题:看下面的算式: (□□□□-□□□□)*□□=900 其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字。 注意:0不能作为某个数字的首位。 小明经过几天的努力,终于做出了答案!如下: (5012-4987)*36=900 用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。 注意:提交的格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。这题刚一拿起题来感觉很简单,不就用几个for循环就解决了。但是你高兴的太早了,当你用for循环时你就会焕然大悟,想得太简单了。for循环超时,根本输不出答案。
最后认真想了下,最后用深搜解决了超时没有答案的问题
下面上代码#include<stdio.h>
int ans[10];
int mid[10]={0,1,2,3,4,5,6,7,8,9};
int book[10]={0};
void dfs(int step)
{
int i;
int a,b,c;
if(step==10)
{
if(ans[0]!=0&&ans[4]!=0&&ans[8]!=0)
{
a=ans[0]*1000+ans[1]*100+ans[2]*10+ans[3];
b=ans[4]*1000+ans[5]*100+ans[6]*10+ans[7];
c=ans[8]*10+ans[9];
if((a-b)*c==900)
{
printf("(%d-%d)*%d=900\n",a,b,c);
}
}
}
for(i=0;i<10;i++)
{
if(book[i]==0)
{
ans[step]=mid[i];
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
}
int main()
{
dfs(0);
return 0;
}
相关文章推荐
- 蓝桥杯---2017模拟赛-高职高专组题目:猜算式
- 2017蓝桥杯省赛A组部分题题解
- 2017第八届蓝桥杯C/C++ B组省赛第二题(素数筛法+枚举)
- 蓝桥杯 字母组串(2017省赛)
- 2016第七届蓝桥杯C/C++ B组省赛第三题:凑算式
- 第七届 蓝桥杯 c/c++ B组 省赛 (3)——凑算式
- 2017第八届蓝桥杯C/C++ B组省赛第四题 dfs
- [dfs(深度优先搜索)]简单类题目 2016年蓝桥杯省赛题第三题——凑算式
- 2015年蓝桥杯省赛A组C/C++题目:猜年龄
- 2017第八届蓝桥杯C/C++ B组省赛第二题 秒解
- 第六届蓝桥杯软件类省赛-JAVA部分题目
- 第七届蓝桥杯大赛省赛-凑算式
- 第七届蓝桥杯省赛C\C++B组题目之四平方和
- 2017第八届蓝桥杯省赛Java A组--9数算式
- 2017第八届蓝桥杯省赛Java A组--9数算式
- YTU OJ 2994: 凑算式 (蓝桥杯题目)
- 2017第八届蓝桥杯Java B组省赛第一题:购物单
- 蓝桥杯-第七届省赛javaB组-凑算式
- 2017第八届蓝桥杯B组省赛第三题:承压计算
- 2017第八届蓝桥杯B组省赛第五题:取位数