一个简单的DFS(深度优先搜索)算法加剪枝技术的程序演示
2009-07-03 22:50
369 查看
/* * Author: 冷却 * Date: 2009年7月3日 * E-mail: leng_que@yahoo.com.cn * Description: 通过DFS(深度优先搜索)算法,再加上一个简单的剪枝技术,很快就能搜索到所有的解 */ //题目要求:每个字母代表一个数字,且不能重复。并且要使竖式成立。 // s e t d //+ m o r d //--------- //m o t e y //分析:考虑到 m 为 s+m 后的进位,则m必为0或1。 //注意:由于题目没有指明m是否可以为0,所以我认为m是可以为0的。 #include <iostream> using namespace std; int main(void) { int s,e,t,d; int m,o,r,y; int sum,tmp,i; for ( m=0; m<=1; m++ ) { for ( o=0; o<=9; o++ ) { if ( o==m ) continue; for ( r=0; r<=9; r++ ) { if ( r==m || r==o ) continue; for ( d=0; d<=9; d++ ) { if( d==m || d==o || d==r ) continue; for ( s=0; s<=9; s++ ) { if ( s==m || s==o || s==r || s==d ) continue; for ( e=0; e<=9; e++ ) { if ( e==m || e==o || e==r || e==d || e==s ) continue; for ( t=0; t<=9; t++ ) { if ( t==m || t==o || t==r || t==d || t== s || t==e ) continue; sum = (s*1000+e*100+t*10+d) + (m*1000+o*100+r*10+d); y = sum%10; if ( y%2 != 0 ) continue; if ( y==s || y==e || y==t || y==d || y==m || y==o || y==r ) continue; tmp = sum; for ( i=1; i<=5; i++ ) { if ( i==2 && tmp%10 != e ) break; else if ( i==3 && tmp%10 != t ) break; else if ( i==4 && tmp%10 != o ) break; else if ( i==5 && tmp%10 != m ) break; tmp /= 10; } if ( i==6 ) { cout<<s<<e<<t<<d<<" + "<<m<<o<<r<<d<<" = "<<m<<o<<t<<e<<y<<endl; } } } } } } } } return 0; }
运行结果:
2817 + 0367 = 03184
3716 + 0456 = 04172
3718 + 0458 = 04176
3719 + 0459 = 04178
5731 + 0641 = 06372
6419 + 0729 = 07148
6851 + 0731 = 07582
6852 + 0732 = 07584
6524 + 0734 = 07258
7536 + 0816 = 08352
8652 + 0912 = 09564
8762 + 0912 = 09674
8543 + 0913 = 09456
9346 + 1086 = 10432
9456 + 1086 = 10542
9237 + 1087 = 10324
9567 + 1087 = 10654
相关文章推荐
- 【原创】一个基于简单剪枝的DFS解数独程序
- 一个简单的小程序演示Unity的三种依赖注入方式
- 练练手,近期实现的一个基于alpha-beta剪枝技术的机器人“追逐”程序
- 一个简单实用的遗传算法c程序(转载)
- FileOutputStream 类 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序
- FileOutputStream 类 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序。
- 算法课上机实验(一个简单的GUI排序算法比较程序)
- 一个简单的小程序演示Unity的三种依赖注入方式
- 一个DFS最简单的入门小程序
- VB面向对象编程的一个简单的演示程序
- 一个简单的小程序演示Unity的三种依赖注入方式
- 一个简单程序演示container_of的原理
- 【技术收藏】enpaodelvzi编写:一个Java写的俄罗斯方块源码 算法简单(300行) 注释详细
- 一个简单有用的JavaScript CRACK程序的解决技术关键点
- 一个51单片机的键盘扫描程序,算法简单有效
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader
- poj 1011-小白算法练习 Sticks 从最简单的做起 dfs+剪枝
- 一个简单有用的JavaScript CRACK程序的解决技术关键点
- 一个简单的小程序演示Unity的三种依赖注入方式
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader