hdu1258
来源:互联网 发布:液体浓度的算法 编辑:程序博客网 时间:2024/06/06 02:19
/*
分析:
如果用记录所有情况,最后输出的方法的话,
那么要注意输出没组的时候,要和前面的所有组
进行是否相同的判断。
2012-07-20
*/
分析:
如果用记录所有情况,最后输出的方法的话,
那么要注意输出没组的时候,要和前面的所有组
进行是否相同的判断。
2012-07-20
*/
#include"stdio.h"#include"string.h"#include"stdlib.h"int num[15];int n,aim;int ans[15],a_len;struct B{int ans[15];int len;}yes[1011];int key;int cmp(const void *a,const void *b){return *(int *)b-*(int *)a;}void P(){int i;if(a_len<=0)return ;for(i=0;i<a_len;i++)yes[key].ans[i]=ans[i];yes[key].len=a_len;key++;}void DFS(int k,int sum){int i;if(sum==aim){P();return ;}if(sum>aim)return ;for(i=k+1;i<n;i++){if(sum+num[i]<=aim){ans[a_len++]=num[i];DFS(i,sum+num[i]);a_len--;}}}int main(){int i,j,l;int flag;while(scanf("%d%d",&aim,&n),n){for(i=0;i<n;i++)scanf("%d",&num[i]);qsort(num,n,sizeof(num[0]),cmp);printf("Sums of %d:\n",aim);a_len=0;key=0;DFS(-1,0);if(!key)printf("NONE\n");else{printf("%d",yes[0].ans[0]);for(l=1;l<yes[0].len;l++)printf("+%d",yes[0].ans[l]);printf("\n");for(i=1;i<key;i++){flag=0;for(j=0;!flag&&j<i;j++){if(yes[i].len!=yes[j].len)continue;else{flag=1;for(l=0;l<yes[i].len;l++)if(yes[i].ans[l]!=yes[j].ans[l]){flag=0;break;}}}if(flag)continue;printf("%d",yes[i].ans[0]);for(l=1;l<yes[i].len;l++)printf("+%d",yes[i].ans[l]);printf("\n");}}}return 0;}
- hdu1258
- hdu1258
- HDU1258
- HDU1258
- hdu1258
- hdu1258(dfs)
- hdu1258/poj1564 dfs
- hdu1258 DFS+回溯
- HDU1258 Sum It Up
- HDU1258:Sum It Up
- hdu1258(DFS)
- Sum It Up hdu1258
- HDU1258 Sum it up
- HDU1258 Sum It Up
- hdu1258 dfs深搜
- HDU1258:Sum It Up(DFS)
- hdu1258 Sum It Up (DFS)
- Sum It Up(hdu1258,dfs)
- PL/SQL 别名时用中文字符报错ora-00911 或中文乱码解决办法
- 升级Flash Builder 4.6中的Flash Player版本
- Cassandra启动过程详解
- VC++/VS2010 Win32控制台程序 运行结束 DOS/dos窗口立刻消失/一闪而过 的解决方法整理
- nginx学习研究(一)安装启动及调试
- hdu1258
- Thin平稳启动的办法
- Singleton模式与双检测锁定(DCL)
- service
- SGI STL的内存池
- 冒烟测试与回归测试
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
- Sencha Touch 2学习笔记(一)---环境搭建和开发工具配置
- 一个简单的 Silverlight 4 应用程序(MEF+ MVVM+ WCF RIA Services)第一部分