2016年蓝桥杯A组 第六题 寒假作业
来源:互联网 发布:bat软件测试招聘 编辑:程序博客网 时间:2024/05/18 03:55
今年的题不知为什么,第三道是考的dfs,这第六道同样是考的dfs,看来深度优先遍历是需要好好学学的!
寒假作业
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果显示不出来,可以参见【图1.jpg】)
每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
这里我们很直观就可以想到用dfs,所以就不多分析了,直接上代码了,感觉通过这两道题,让我对dfs的感觉更到位了!
对,就是这个赶脚!跟着赶脚走,学算法是很快的,哈哈哈!
#include <stdio.h>#define _MAX 13int ans = 0;int num[_MAX] = {0};int visited[_MAX] = {0};int test(int n){ if (n == 2) { if (num[0] + num[1] == num[2]) { return 1; } } else if (n == 5) { if (num[3] - num[4] == num[5]) { return 1; } } else if (n == 8) { if (num[6] * num[7] == num[8]) { return 1; } } else if (n == 11) { if (num[10] * num[11] == num[9]) { ans++; return 1; } } else { return 1; } return 0;}void dfs(int n){ int i = 0; if (n >= _MAX) { return ; } for (; i < _MAX; i++) { if (!visited[i]) { visited[i] = 1; num[n] = i + 1; if (!test(n)) //如果不符合规则,则撤销这个分支 { visited[i] = 0; continue; } dfs(n + 1); visited[i] = 0; } } return ;}int main(int argc, const char * argv[]){ dfs(0); printf("%d\n", ans); return 0;}
OVER!!!
1 0
- 2016年蓝桥杯A组 第六题 寒假作业
- 2016蓝桥杯C++A组第六题 寒假作业
- 2016年第七届蓝桥杯C/C++A组第六题---寒假作业
- 2016蓝桥杯省赛软件A组-寒假作业
- 2016年蓝桥杯C语言大学A组题目6--寒假作业
- 【16级第二周寒假作业A题】
- 2016-寒假作业
- 2016年蓝桥杯A组java第六题
- 寒假作业
- 寒假作业
- 寒假作业
- 寒假作业
- 寒假作业
- 寒假作业
- HPUOJ---2017寒假作业--专题-1/M-人见人爱A^B
- 蓝桥杯-第七届省赛javaA组-寒假作业
- 寒假第六天
- 寒假作业1
- Java专项进阶篇
- Java 抽象类与接口
- python小技巧及速度提高
- dp-整数划分问题(理论分析)
- C++作业2
- 2016年蓝桥杯A组 第六题 寒假作业
- Eclipse中导入Android工程
- apache最大连接数性能测试
- Mac OS 更新到 10.11.3 之后打不开 github
- Java网络编程
- IntelliJ IDEA 13.1.16 配置、获取、上传Github项目
- 软件开发的吐槽与思考
- corethink功能模块探索开发(十二)后台添加自定义按钮
- 网络技术之数据包校验码的计算方法