poj1010——dfs搜索题
来源:互联网 发布:迅雷断点下载 java 编辑:程序博客网 时间:2024/04/29 04:44
又一次回顾了DFS的写法,感觉不错
在这里讲一下题意,免得以后自己再看时看不懂题目- -
有多种邮票,每种邮票有自己的价格,不同种的邮票价格可以一样
有多位顾客,每个顾客要在店里消费x元的邮票
计算每个顾客买邮票的最佳组合
最佳要求:
优先选种类最多组合
否则,优先数量最少的组合
否则,优先选“ 组合中面值最大邮票 ” 最大的组合
#include<stdio.h>#include<string.h>#include<math.h>#define M 2000int stamp[M],custom[M],stamp_num,custom_num,ans,put[M],flag;int now_custom;int best_n,best_z,best_max,best_put[M];void change_best(int n,int z){int i;best_z=z;best_max=stamp[put[n-1]];best_n=n;for(i=0;i<n;i++)best_put[i]=put[i];flag=0;}int dfs(int n,int sum,int z,int j){int i;if(n>4)return ;if(sum==now_custom){if(z>best_z)change_best(n,z);else if(z==best_z){if(n<best_n)change_best(n,z);else if(n==best_n){if(stamp[put[n-1]]>best_max)change_best(n,z);else if(stamp[put[n-1]]==best_max)flag=1;}}return ;}for(i=j;i<stamp_num;i++){put[n]=i;if(n==0||put[n]!=put[n-1])z=z+1;dfs(n+1,sum+stamp[i],z,i);if(n==0||put[n]!=put[n-1])z=z-1;}}void sort(int ii){int i,j;int temp;for(i=0;i<ii;i++)for(j=i;j<ii;j++){if(stamp[i]>stamp[j]){temp=stamp[j];stamp[j]=stamp[i];stamp[i]=temp;}}}void main(){int i,j,a;while(scanf("%d",&a)!=EOF){i=0;stamp[i]=a;i++;while(scanf("%d",&a),a!=0){stamp[i]=a;i++;}sort(i);stamp_num=i;i=0;while(scanf("%d",&a),a!=0){custom[i]=a;i++;}custom_num=i;for(i=0;i<custom_num;i++){best_max=best_z=best_n=0;flag=2;now_custom=custom[i];dfs(0,0,0,0);if(flag==0){printf("%d (%d):",custom[i],best_z);for(j=0;j<best_n;j++){printf(" %d",stamp[best_put[j]]);}printf("\n");}else if(flag==1){printf("%d (%d):",custom[i],best_z);printf(" tie\n");}else if(flag==2){printf("%d ---- none\n",custom[i]);}}}}
0 0
- poj1010——dfs搜索题
- POJ1010-搜索题基础
- poj1010 dfs
- POJ1010(dfs)
- poj1010搜索
- POJ1010 STAMPS(DFS+剪枝)
- 【DFS】Poj1010 STAMPS
- [c]poj1010 dfs
- poj1010 dfs/枚举
- poj1010 STAMPS 简单搜索
- poj1011——剪枝dfs搜索题
- poj1010
- poj1010
- poj1010
- poj1010
- HDOJ——1016(经典dfs搜索题)
- 图—搜索——DFS
- poj1010 Tempter of the Bone DFS花式剪枝...
- Android使用Volley上传文件
- codeforces 633C. Spy Syndrome 2 trie + dp
- 设计模式——装饰者模式
- uva725 Division
- 利用IIS和花生壳在校园网IP下搭建简单网站超详细教程
- poj1010——dfs搜索题
- 关于adb connect error的简单解决方法
- 蓝桥杯六7牌型种类
- NLTK学习笔记——Classify模块(2)
- 字符串预处理类
- Masonry自动布局学习博客网址
- [Android进阶]---WebView与js交互
- 好记性不如烂笔头
- 多阶段决策模板(2059)