hdu2266How Many Equations Can You Find(简单深搜)c语言
来源:互联网 发布:淘宝外卖客服电话多少 编辑:程序博客网 时间:2024/06/05 14:30
题目大意:输入一段数字,在这段数字中任意添加加号,减号,使其能够等于结果
思路:直觉上直接想到枚举尝试(类似于算24分,只不过牌变多了,运算规则变简单了),但是用过的牌(数字)不能重复使用,于是就可以用深搜解题。
搜的范围大概是:得到一个数字,1.该数字加到sum中 2.该数字和sum作差 3.该数字啥都不做进入下一个搜索(不做的话要把他成为数字的尾部)
附代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>using namespace std;char a[20];int result,cnt;void dfs(int k,int sum){if(k==strlen(a)){if(sum==result)cnt++;return ;}int i,j,s;for(i=k;i<strlen(a);i++) //从k处开始往后找{for(j=k,s=0;j<=i;j++) //从k处到i处算出那些没做加减的数的值s=s*10+a[j]-'0';dfs(i+1,sum+s);if(k>0) //这个判断是必要的,因为当k为第一个数字时,不能做啥操作,即加号没影响,但减号有影响dfs(i+1,sum-s);}return ;}int main(){while(~scanf("%s %d",a,&result)){cnt=0;dfs(0,0);printf("%d\n",cnt);}return 0;}
阅读全文
0 0
- hdu2266How Many Equations Can You Find(简单深搜)c语言
- HDU2266How Many Equations Can You Find
- HDU2266How Many Equations Can You Find(深搜)
- How Many Equations Can You Find 2266 (深搜 dfs)
- 【HDU】2266 - How Many Equations Can You Find(dfs)
- HDU 2266 How Many Equations Can You Find (DFS)
- DFS hdu2266(How Many Equations Can You Find)
- How Many Equations Can You Find
- How Many Equations Can You Find
- hdu2266 How Many Equations Can You Find
- How Many Equations Can You Find HDU
- How Many Equations Can You Find(DFS)
- How Many Equations Can You Find
- How Many Equations Can You Find
- How Many Equations Can You Find
- hdu 2266 How Many Equations Can You Find
- hdu 2266 How Many Equations Can You Find
- hdu-2256 How Many Equations Can You Find
- java IDE是什么
- lintcode--最长公共子序列
- Shiro在web应用中实现验证码、回显登录失败信息
- 前端代码规范
- View基础——VelocityTracker
- hdu2266How Many Equations Can You Find(简单深搜)c语言
- SpringBoot No embedded stylesheet instruction for file: ……logback.xml
- string类详解
- VMware设置共享文件夹
- java数据结构与算法-递归二分查找
- 正则表达式格式
- Spring Boot 部署与服务配置
- 如何将Red5添加到系统服务中
- 深度学习框架提供的“Model Zoo“