HDU 1258 【水dfs】
2015-06-04 19:08
330 查看
。。。。。。。本来想做1285的。。。然后看岔了。。好囧。。
看了题目觉得还有点意思可以敲。。于是想了想蛮敲敲好了。。恩。。就是这样。。
数据范围不大,最多就12个数,可以暴力,也就4096次?就2^12,然后感觉用了STL开挂蛮多的。。。不过现在越来越觉得STL好用了,打算以后有空了自己去实现一遍。。
看了题目觉得还有点意思可以敲。。于是想了想蛮敲敲好了。。恩。。就是这样。。
数据范围不大,最多就12个数,可以暴力,也就4096次?就2^12,然后感觉用了STL开挂蛮多的。。。不过现在越来越觉得STL好用了,打算以后有空了自己去实现一遍。。
#include <stdio.h> #include <algorithm> #include <map> #include <string> #include <iostream> using namespace std; int a[13]; map<string,int>vis; int t,n,flag; string change(int x,int sum) { string ret="",tmp=""; if(sum!=0) ret+="+"; while(x) { int j=x%10; tmp=(char)(j+'0')+tmp; x/=10; } return ret+tmp; } void dfs(int x,int sum,string len) { if(x>n) return; if(sum>t) return; if(sum==t&&!vis[len]) { vis[len]=1; flag=1; cout<<len<<endl; return; } dfs(x+1,sum+a[x+1],len+change(a[x+1],sum)); dfs(x+1,sum,len); } int cmp(int a,int b){return a>b;} int main() { while(scanf("%d%d",&t,&n)!=EOF&&n&&t) { vis.clear(); flag=0; for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n,cmp); printf("Sums of %d:\n",t); dfs(0,0,""); if(!flag) printf("NONE\n"); } return 0; }
相关文章推荐
- MySql中的varchar类型
- msdb.dbo.sp_send_dbmail 用法简介
- 无限的路
- (10.3.1)产品经理应该先写需求文档还是先画原型?
- mouse_event() 函数综合鼠标击键和鼠标动作
- HTML DOM对象
- 利用ViewPager实现图片循环滚动
- 字符常见的几种编码方式
- w3c 学习html DOM
- Mysql中的sync_binlog参数
- 黑马程序员_java语言_多线程和设计模式
- [转]JavaScript 的同源策略
- IOS js调OC方法
- Android用户自动登录
- Xcode自带的查看视图布局的工具
- AsyncTask源码解析
- 【通过操作指针,与指针做函数參数'实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】
- 约瑟夫问题-sdut 1197
- IT大武汉
- 理解OAuth2.0