hdoj - 1258 Sum It Up && hdoj - 1016 Prime Ring Problem (简单dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1258
关键点就是一次递归里面一样的数字只能选一次。
#include <cstdio>
#include <cstring> int n,t;
int b[],c[];
bool flag;
void dfs(int k,int sum,int l)
{
if(sum==t)
{
for(int i=;i<l-;i++)
printf("%d+",c[i]);
printf("%d\n",c[l-]);
flag=;
return;
}
int last=-;
for(int i=k;i<n;i++)
{
if(sum+b[i]>t) continue;
if(b[i]!=last) //注意这个就好了
{
last=c[l]=b[i];
dfs(i+,sum+b[i],l+);
}
}
} int main()
{
// freopen("a.txt","r",stdin);
while(~scanf("%d%d",&t,&n))
{
if(n==) break;
memset(c,,sizeof(c));
flag=;
for(int i=;i<n;i++)
scanf("%d",&b[i]);
printf("Sums of %d:\n",t);
dfs(,,);
if(!flag) printf("NONE\n");
}
return ;
}
http://acm.hdu.edu.cn/showproblem.php?pid=1016
这题注意回溯就好。
#include <cstdio>
#include <cstring>
int n,b[];
bool used[];
bool is_prime(int x)
{
if(x==) return false;
else if(x==||x==) return true;
for(int i=;i*i<=x;i++)
if(x%i==) return false;
return true;
} void dfs(int k,int num)
{
if(num==n)
{
//printf("%d\n",num);
if(is_prime(b[n]+b[]))
{
//printf("%d\n",k);
for(int i=;i<n;i++)
printf("%d ",b[i]);
printf("%d\n",b[n]);
}
return;
}
for(int i=;i<=n;i++)
{
if(!used[i]&&is_prime(b[num]+i))
{
used[i]=true;
b[num+]=i;
//printf("%d %d\n",i,num);
dfs(i,num+);
used[i]=false;
}
}
} int main()
{
// freopen("a.txt","r",stdin);
int j=;
while(~scanf("%d",&n))
{
memset(b,,sizeof(b));
memset(used,,sizeof(used));
printf("Case %d:\n",j++);
b[]=;
used[]=true;
dfs(,);
printf("\n");
}
return ;
}
hdoj - 1258 Sum It Up && hdoj - 1016 Prime Ring Problem (简单dfs)的更多相关文章
- hdu 1016 Prime Ring Problem(dfs)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1016 Prime Ring Problem (dfs)
一切见凝视. #include <cstdio> #include <iostream> #include <cstring> #include <algor ...
- HDOJ(HDU).1016 Prime Ring Problem (DFS)
HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- [HDU 1016]--Prime Ring Problem(回溯)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- HDU 1016 Prime Ring Problem(素数环问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- hdu 1016 Prime Ring Problem(DFS)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 杭电oj 1016 Prime Ring Problem
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1016 Prime Ring Problem(深度优先搜索)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- AC自动机学习
今天包括这一周开始学习AC自动机了,有点晚,但我感觉努努力还来得及.4月份还得认认真真攻图论,加油! 为2个月后的邀请赛及省赛.东北赛做准备. 推荐AC自动机学习地址:http://www.cppbl ...
- BZOJ3130 [Sdoi2013]费用流
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130 这题codevs上也有,不过数据挂了[要A得看discuss]. 题目大意: Ali ...
- Matlab动态数组实现
clear all; clc; a = []; %不是null,也不能什么都不是 for i=1:10 a = [a i]; end
- java 验证电话号码(手机和固话)
- xp/2003开关3389指令
开启3389: @echo offtitle 开启3389clsrem 开启3389reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...
- Ckeditor注册事件
这段时间使用js+cookies进行自动草稿保存,个人觉的,这些全在客户端处理比较的好,所以没有使用AJAX+数据库的自动草稿保存方法. 结果出现Ckeditor无法绑定onkeyup,onselec ...
- Android Environment FAQ (Frequently Asked Question)
1.how to find out the Eclipse Version From Eclipse Menu Help ----> About Eclipse It displayed as ...
- Unity3D战争迷雾效果
原地址:http://liweizhaolili.blog.163.com/blog/static/16230744201431835652233/ 最近一直都在做Flash相关的东西,很久没有空搞U ...
- 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(3)
[编者按]本篇文章作者是 Reinder de Vries,既是一名企业家,也是优秀的程序员,发表多篇应用程序的博客.本篇文章中,作者主要介绍了如何基于 Parse 特点,打造一款类似 Instagr ...
- SQL 递归查询
WITH B (FATHER,SON,ID,ALLINFO) AS (SELECT RTRIM(LTRIM(CHAR(A.ID)))|| CHAR(ROW_NUMBER() OVER(PARTITIO ...