□□□ + □□□ = □□□
2016-02-26 01:30
239 查看
□□□ + □□□ = □□□ 将1~9放入□中使其成立
深搜。。。
#include <stdio.h>
#include <stdlib.h>
int a[10],visit[10],total = 0;
void dfs(int step)
{
int i;
if(step == 10)//满足个数输出
{
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++;
printf("%d%d%d + %d%d%d = %d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
return;
}
for(i=1;i<=9;i++)
{
if(visit[i] == 0)
{
a[step] = i;//存入数字
visit[i] = 1;//标记已访问
dfs(step+1);//递归下一个
visit[i] = 0;//回溯
}
}
return;
}
int main()
{
dfs(1);
printf("total = %d\n",total);
return 0;
}
深搜。。。
#include <stdio.h>
#include <stdlib.h>
int a[10],visit[10],total = 0;
void dfs(int step)
{
int i;
if(step == 10)//满足个数输出
{
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++;
printf("%d%d%d + %d%d%d = %d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
return;
}
for(i=1;i<=9;i++)
{
if(visit[i] == 0)
{
a[step] = i;//存入数字
visit[i] = 1;//标记已访问
dfs(step+1);//递归下一个
visit[i] = 0;//回溯
}
}
return;
}
int main()
{
dfs(1);
printf("total = %d\n",total);
return 0;
}
相关文章推荐
- Matlab做快速傅里叶变换
- 将二叉树拆成链表 Flatten Binary Tree to Linked List
- Window消息机制
- 冒泡,选择,插入排序的效率比较
- CentOS下NTP时间服务器的架设和Windows客户端的配置(三)Windows客户端配置
- 关于Spring+Mybatis打印日志的问题
- 【CSS3】CSS生成内容:content
- 挨踢职场求生法则-----我在IT职场打滚超过15年了,从小小的程序员做到常务副总
- 判断int类型是否为空
- 为你的Android应用定制属于你的BaseActivity http://blog.csdn.net/jiahui524
- JVM学习笔记
- DEA(数据包络分析)程序模板
- spring-data-redis中的坑和误区
- Codeforces Round #258 (Div. 2)E. Devu and Flowers
- PullToRrefresh自定义下拉刷新动画
- kidd风的IOS日志之触摸事件,手势识别,摇晃事件的详解
- 一致性哈希原理与实现
- Floyd算法求最短路问题
- 分布式锁的三种实现方式
- Python字符串的encode与decode研究心得乱码问题解决方法