HDU 1258 Sum it up 搜索DFS
来源:互联网 发布:林书豪 数据 编辑:程序博客网 时间:2024/05/16 19:31
题目大意:给定N个数,要求输出相加为M的数字表达式,要求不重不漏。
题目分析:由于题目中给定的是不降序列,所以我们只需要用一个last指针来判断就可以做到不重.
如下代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int a[20],ans[20],sum,n;bool flag=false;bool v[20]; void dfs(int x,int count,int m)//当前搜索到第X个元素,count为ans指针,m为和 {int last;if(m>sum)return;if(m==sum){flag=true;for(int i=1;i<count;i++)//输出答案 {if(i==count-1)printf("%d\n",ans[i]);else printf("%d+",ans[i]);}}last=-1;//关键在于去重, 因为题目中是不降序,所以可以放心只用last指针判断 for(int i=x;i<=n;i++){if(last!=a[i]){ans[count]=a[i];last=a[i];dfs(i+1,count+1,m+a[i]);}}return ;}int main(){//freopen("1.out","w",stdout);while(scanf("%d%d",&sum,&n)!=EOF){if(!n||!sum)break;for(int i=1;i<=n;i++)scanf("%d",&a[i]);flag=false;printf("Sums of %d:\n",sum);dfs(1,1,0);if(!flag)printf("NONE\n");}//while(1);return 0;}
0 0
- HDU 1258 Sum it up 搜索DFS
- hdu 1258 Sum It Up(DFS)
- hdu 1258 Sum It Up(dfs)
- hdu 1258 Sum It Up(dfs)
- hdu 1258 Sum It Up dfs
- HDU 1258 Sum It Up DFS
- HDU--1258:Sum It Up (DFS)
- hdu 1258 Sum It Up (dfs)
- hdu 1258 Sum It Up(dfs)
- HDU 1258 Sum It Up (DFS)
- HDU 1258 Sum It Up (还是DFS)
- HDU 1258 Sum It Up(DFS)
- hdu 1258 Sum it up dfs+剪枝
- HDOJ(HDU).1258 Sum It Up (DFS)
- hdu 1258 Sum It Up dfs暴搜
- HDU 1258 (DFS) Sum It Up
- HDU 1258 Sum It Up(DFS)
- HDU 1258-Sum It Up(dfs)
- IMSDroid视频横屏显示
- 黑马程序员—[Android就业薪资] Android30期,毕业37工作日,就业率93%,平均薪水10315元!
- 【教程】如何申请Chrome应用商店(Web Store)开发者
- Struts2多文件上传例子
- 一幅画
- HDU 1258 Sum it up 搜索DFS
- MATLAB中的字符串
- BZOJ2818 Gcd 素数筛+欧拉筛
- HLSL基础练习
- 黑马程序员—2014史上最难就业年,争做“大波”幸运儿
- [WARALD美国职业谈] 读了博士PHD有什么出路?
- 乱码是怎样形成的?编码和解码的规则
- 在XP上安装VS2002
- 黑马程序员----键盘录入,以over为结束(黑马视频)