zoj1711 dfs搜索+去重
来源:互联网 发布:日期计算器软件 编辑:程序博客网 时间:2024/05/21 12:41
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1711
思路;dfs搜索,把所有可能的情况存下来,重复的标记掉,输出结果
#include<cstdio>#include<cstring>using namespace std;const int N=5000;int t,cnt,p,flag,sum,n,ans[N][13],isok[N],len[N],map[13],tmp[13];void dfs(int d){ int i; if(sum==t) { flag=1; for(i=0;i<p;i++) ans[cnt][i]=tmp[i]; len[cnt]=p; cnt++; return ; } for(i=d;i<n;i++) { if(sum+map[i]<=t) { tmp[p++]=map[i]; sum+=map[i]; dfs(i+1); sum-=map[i]; p--; } }}int cmp(int a,int b){ int i; if(len[a]!=len[b]) return 1; else { for(i=0;i<len[a];i++) if(ans[a][i]!=ans[b][i]) return 1; } return 0;}void outp(){ int i,j; memset(isok,0,sizeof(isok)); for(i=0;i<cnt;i++) { if(isok[i]==1) continue; for(j=i+1;j<cnt;j++) { if(cmp(i,j)==0) isok[j]=1; } } for(i=0;i<cnt;i++) { if(isok[i]) continue; for(j=0;j<len[i];j++) { if(j==0) printf("%d",ans[i][j]); else printf("+%d",ans[i][j]); } printf("\n"); }}int main(){ int i; //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(scanf("%d%d",&t,&n)!=EOF) { cnt=0; if(n==0) break; for(i=0;i<n;i++) scanf("%d",&map[i]); flag=0;sum=0;cnt=0;p=0; dfs(0); printf("Sums of %d:\n",t); outp(); if(!flag) printf("NONE\n"); } return 0;}
0 0
- zoj1711 dfs搜索+去重
- ZOJ1711-sum it up(DFS+去重)
- ZOJ1711 POJ1564 Sum It Up,DFS+输出排序+去重复
- ZOJ1711
- zoj1711
- POJ 1564(DFS+去重)
- dfs去重(剪枝)
- ZOJ 1711--DFS--组合--剪枝/去重
- USACO ORZ(DFS+set去重)
- 全排列 【dfs回溯】+【set去重】
- HDU 4277 dfs+set去重
- poj 3050 Hopscotch【搜索、去重】
- zoj 1711 || poj 1564 Sum It Up(DFS~~~去重~)
- POJ 题目1564 Sum It Up(DFS,去重)
- Sum It Up(DFS+剪枝+去重)
- hpuoj1693 CZY的YY难题【DFS】【去重】
- ZOJ-2734-Exchange Cards(DFS全排列+去重)
- HDU 1258 Sum It Up (dfs+去重)
- HDOJ 计算直线的交点数 1466
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用构造函数
- Android入门--BroadcastReceiver的使用
- 论stringstream正确使用之道
- Haar+Adaboost 车辆检测 目标检测(视频车辆检测算法代码)
- zoj1711 dfs搜索+去重
- uva 10859 Placing Lampposts 树形dp
- Python实现ssh批量登录并执行命令
- 回首2014,无奈,失落,混合成一丝悲哀
- AngularJS关于 在指令与外部通讯的说明
- 系灰暗约会啦
- Junit 4.x学习
- 注意比较int与size_t容易忽略的错误
- Android让App彻底退出