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 ...
随机推荐
- 【BZOJ】【3439】Kpm的MC密码
Trie树/可持久化线段树 神题啊……搞了我一下午= =(其实第233个提交也是我的) 我一开始的思路:这个找kpm串的过程,其实就跟在AC自动机上沿fail倒着往下走是差不多的(看当前是哪些点的后缀 ...
- Matlab梯度下降解决评分矩阵分解
for iter = 1:num_iters %梯度下降 用户向量 for i = 1:m %返回有0有1 是逻辑值 ratedIndex1 = R_training(i,:)~=0 ; %U(i,: ...
- 查看windows系统热键占用情况
有时候我们经常用一些软件中的快捷键,但是会发现快捷键设置的很正确,但是就是不起作用.这就是因为这些快捷键被系统或者其他软件占用了. 那么这时我们怎么知道是哪个软件占用了呢?这确实是个纠结的问题,还好大 ...
- sqlserver 查询库中有多少张表
表数目:select count(1) from sysobjects where xtype='U' 视图数::select count(1) from sysobjects where xtype ...
- 关于Web与JS
Web包含的范围比较广, JS只是代码逻辑而已. Web比如HTTP Message, SOAP Message, 浏览器流程,工具等. 不仅仅是代码.
- 遭遇Asp.Net长文件名下载的问题和解决办法
在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: <!--<br /> ...
- SOA之(3)——面向服务计算基础
面向服务计算基础(Service-Oriented Computing Fundamentals) 面向服务的计算(Service-Oriented Computing) 面向服务的计算是一个伞状术语 ...
- mysql同时修改2个表思路
1.需求:修改评论表中的昵称为手机号码最后4位. ,) AND issuer_name LIKE '1%'; 2.由于误操作(MID(issuer_name,4,6)是中间的6位),需要数据回滚. 3 ...
- yum install 与 yum groupinstall 的区别
原文:http://blog.51yip.com/linux/1171.html yum 提供二种安装软件的方式 1,yum install 它安装单个软件,以及这个软件的依赖关系 2,yum gro ...
- poj 2723
Get Luffy Out Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7295 Accepted: 2778 Des ...