蓝桥杯 猜算式
2016-03-04 22:36
260 查看
题目描述:
看下面的算式:
□□ 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
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
解题思路:
此题为搜索题,将上述四个数用a,b,c,d表示,这四个数一共九位,每位是1-9这九个数中的一个,所以每确定一组数dfs九次,每次将1-9这九个数都试探一下,并记录a,b,c,d的具体值,记录方式为id=1,表示a的十位;id=2,表示个位,以此类推。
注意:每组dfs后需要把访问标记数组以及a,b,c,d,还原为前面的状态。
代码如下:
看下面的算式:
□□ 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
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
解题思路:
此题为搜索题,将上述四个数用a,b,c,d表示,这四个数一共九位,每位是1-9这九个数中的一个,所以每确定一组数dfs九次,每次将1-9这九个数都试探一下,并记录a,b,c,d的具体值,记录方式为id=1,表示a的十位;id=2,表示个位,以此类推。
注意:每组dfs后需要把访问标记数组以及a,b,c,d,还原为前面的状态。
代码如下:
<pre name="code" class="cpp">#include<iostream> #include<string.h> using namespace std; int a,b,c,d; //a*b=c*d bool visit[10]; //访问标记数组 bool com[10000]; //判断a与b的积是否出现过 void dfs(int id) //id表示到了那个数的哪一位 { if(id==10) //一组数记录完成,判断是否能实现a*b=c*d { if(a*b==c*d&&com[a*b]==0) { cout<<a<<"*"<<b<<"="<<c<<"*"<<d<<endl; com[a*b]=1; } else return; } for(int i=1; i<=9; i++) { if(visit[i]==0) { if(id==1) a=i*10; if(id==2) a+=i; if(id==3) b=i*10; if(id==4) b+=i; if(id==5) c=i*10; if(id==6) c+=i; if(id==7) d=i*100; if(id==8) d+=i*10; if(id==9) d+=i; visit[i]=1; dfs(id+1); visit[i]=0; if(id==2) a-=i; if(id==4) b-=i; if(id==6) c-=i; if(id==8) d-=i*10; if(id==9) d-=i; } } } int main() { memset(visit,0,sizeof(visit)); memset(com,0,sizeof(com)); dfs(1); }
相关文章推荐
- 单例模式
- 【HDOJ】4326 Game
- 数列求和-加强版 PAT
- HttpClient4.5教程-基础 1.1
- JavaScript插件:快速选择日期----jedate日历插件
- 3,.4运维人员必须熟悉的运维工具汇总
- 用python自动下载妹子图
- php技术论坛开通了
- 怀念杨裕球学长[转]
- setRequestedOrientation 改变屏幕方法
- 基于ARM的音视频采集与传输系统
- git使用笔记
- BZOJ1044/HAOI2008木棍分割
- 蓝桥杯 地宫取宝
- CocoaPods的安装(以下命令均在终端下操作)
- Android内存优化之 LruCache与DiskLruCache
- Leetcode 102 Binary Tree Level Order Traversal 二叉树+BFS
- 联想y460 +centos6.4 64位 开启无线热点Ap
- Java中的字节流和字符流
- 模板与泛型编程2