hdu1016Prime Ring Problem
就是说,给你一个数n,
要你把1到n都连在一起成环。
每一个数不可反复,
且相连的两个数的和要是素数。
把全部情况输出来。
我是用dfs暴力出来的。
首先把素数打表,
然后每次顺时针预測下一个数,
由于这个数必需要是素数减去上一个数,
非常好枚举。
我的代码例如以下:
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int map[30],num,prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41},used[30],save[10000][30],cnt;
void init()
{
cnt=0;
memset(used,0,sizeof(used));
used[1]=1;
map[1]=1;
}
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
bool isprime(int x)
{
int *p;
p=(int *)bsearch(&x,prime,13,sizeof(int),cmp);
if(p!=NULL)
return 1;
return 0;
}
void dfs(int i)
{
if(i==num)
{
if(isprime(map[num]+1))
{
memcpy(save[cnt],map,sizeof(save[cnt]));
cnt++;
}
return;
}
for(int j=0;j<13;j++)
{
int tmp=prime[j]-map[i];
if(tmp>num)
break;
if(tmp>1&&!used[tmp])
{
map[i+1]=tmp;
used[tmp]=1;
dfs(i+1);
used[tmp]=0;
}
}
}
int main()
{
int exp=0;
while(scanf("%d",&num)!=EOF)
{
printf("Case %d:\n",++exp);
init();
dfs(1);
for(int i=0;i<cnt;i++)
{
printf("%d",save[i][1]);
for(int j=2;j<=num;j++)
printf(" %d",save[i][j]);
printf("\n");
}
printf("\n");
}
}
hdu1016Prime Ring Problem的更多相关文章
- 素数环:NYOJ--488--dfs||hdu-1016-Prime Ring Problem
/* Name: NYOJ--488--素数环 Author: shen_渊 Date: 15/04/17 15:30 Description: DFS,素数打个表,37以内就够用了 */ #incl ...
- DFS——hdu1016Prime Ring Problem
一.题目回顾 题目链接:Prime Ring Problem Problem Description A ring is compose of n circles as shown in diagra ...
- 搜索专题: HDU1016Prime Ring Problem
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- uva 524 prime ring problem——yhx
Prime Ring Problem A ring is composed of n (even number) circles as shown in diagram. Put natural ...
- 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 ...
- HDU1016 Prime Ring Problem(DFS回溯)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- 带中文索引的ListView 仿微信联系人列表
因为各种原因,项目经理和产品经理把我做的东西给否定了,所以决定分享出去. 主要功能: 1 .带中文索引的ListView 2.自己定义顶部搜索视图,能够对返回button,搜索button加入事件监听 ...
- 【转】iOS开发24:使用SQLite3存储和读取数据
转自:http://my.oschina.net/plumsoft/blog/57626 SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加 ...
- My way on Linux - 知识梳理计划
知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.
- Javascript基础form表单
<!DOCTYPE HTML> <html> <head> <script type="text/javascript" charset= ...
- 未能加载文件或程序集“System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
最近用vs2012发布程序,然后将更新后的程序文件部署到服务器上,由于服务器上本来有此系统,所以只更新了修改的文件 . 进行系统登录时提示:未能加载文件或程序集“System.Web.Extensio ...
- 使用游标循环进行SQL更新插入的SQL语句
使用SQL中的循环,可以实现许多我们需要的操作,比如SQL更新操作.下面就为您介绍使用游标循环进行SQL更新插入的SQL语句写法,希望对您深入学习SQL更新有所帮助. --开始事务 BEGIN TRA ...
- Eclipse汉化后怎么改回英文版 (中文 改 英文)
Eclipse汉化后怎么改回英文版(可切换中英文) 很多朋友将MyEclipse汉化后还想改回英文的,其实只要修改MyEclipse的配置文件就可以了,这里我以MyEclipse7.0为例演示一下如何 ...
- 《第一行代码》学习笔记30-内容提供器Content Provider(3)
1."如何在自己的程序中访问其他应用程序的数据",思路->获取到该应用程序的内容URI,再借助ContentResolver进行CRUD操作. 2.要实现跨程序共享数据-&g ...
- Winform 无边框随意拖动【转载】
本篇技术内容转载自:http://www.cnblogs.com/ap0606122/archive/2012/10/23/2734964.html using System; using Syste ...
- DataSource
数据库连接池原理:在内存中开辟一段存储空间用来存储多个Connection连接,避免频繁的创建Connection,从而提高效率.代码如下: package jcbc.ds.test1; import ...