等式填空
2016-03-11 01:59
190 查看
1-9个数字组成一个等式()()()+()()()=()()(),求几种填法
等价于往9个盒子中装9个数字问题
等价于往9个盒子中装9个数字问题
#include<iostream> using namespace std; int a[10],book[10],n,total;//全局变量默认初始化为0 ,book标记是否牌在手中 void dfs(int step)//step表示现在站在第几个盒子面前 { int i; if(step==n+1)//如果站在n+1个盒子面前,表示前面的n个盒子都已经放好了 { if(a[1]*100+a[2]*10+a[3]+a[4]*100+a[5]*10+a[6]==a[7]*100+a[8]*10+a[9]) { total++; for(i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; } return ;//返回之前的一步(最近一次调用dfs的地方) 注意在走完所有的盒子时候step==n+1一定立刻return; } for(i=1;i<=n;i++) { if(book[i]==0)//表示第i个牌仍在手 { a[step]=i;//将i号扑克牌放入第step个盒子中 book[i]=1;//表示第i个扑克牌不在手上了 dfs(step+1);//第step个盒子放好牌,接下来走到下一个盒子面前 book[i]=0;//非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试。 } } } int main() { n=9; dfs(1); //首先站在第1个盒子面前 cout<<total/2<<endl; return 0; }
相关文章推荐
- 1104. Sum of Number Segments (20)
- Java堆、栈、方法区、常量池
- 循环笑脸迷宫
- Activity跨进程访问
- 设置UITextField的placeholder的颜色及字体
- POJ-1422-Air Raid-求最小路径覆盖(匈牙利算法)
- 设计模式
- 全排列
- 阶段计划
- kernel 中的红黑树
- 我为什么从Angular转向React?
- 搭建linux服务器之Vim配置
- Clang 宏定义初探(二)
- JavaScript学习笔记(九)—— JS 理解闭包
- hadoop 排序
- 判断当前应用程序处于前台还是后台 ANDROID
- ELM的算法及伪代码
- [并查集] hdu1272 小希的迷宫
- 我与小娜(33):AlphaGo又胜一局
- C++ Exceptional Item 20 Class Mechanics