社区
数据结构与算法
帖子详情
zju 1457 prime ring
neptunez
2003-02-13 12:44:12
请问都有什么算法阿,。。
要求时间30秒。。。回溯是肯定不行了,我都已经优化的不能再优化了。。
http://acm.zju.edu.cn/show_problem.php?pid=1457
...全文
88
6
打赏
收藏
zju 1457 prime ring
请问都有什么算法阿,。。 要求时间30秒。。。回溯是肯定不行了,我都已经优化的不能再优化了。。 http://acm.zju.edu.cn/show_problem.php?pid=1457
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LeeMaRS
2003-02-13
打赏
举报
回复
就是回溯,注意排除无解的情况,不要做无谓的搜索
mmmcd
2003-02-13
打赏
举报
回复
就是回溯
#define true 1
#define false 0
#include <iostream.h>
short can[21][21];//我这个tc++竟没有bool类型
short in[21];
short result[20];
short N;
short is_prime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0)return false;
return true;
}
void initial()
{
int i,j;
for(i=1;i<21;i++)
{
for(j=i;j<21;j++)
{
can[j][i]=can[i][j]=is_prime(i+j);
}
}
}
void output()
{
int i=0;
for(;i<N-1;i++)
cout<<result[i]<<' ';
cout<<result[i]<<endl;
}
void go(int k)
{
int i;
if(k==N)
{
if(can[result[0]][result[N-1]])
output();
return;
}
for(i=result[k-1]%2+1;i<=N;i+=2)
{
if(in[i])
continue;
if(can[result[k-1]][i])
{
result[k]=i;
in[i]=true;
go(k+1);
in[i]=false;
}
}
}
int main()
{
int n=0;
int i;
initial();
in[1]=true;
result[0]=1;
for(;cin>>N;)
{
cout<<"Case "<<++n<<":\n";
for(i=2;i<=N;i++)
in[i]=false;
if(N%2==0)
go(1);
cout<<endl;
}
return 0;
}
nhzp
2003-02-13
打赏
举报
回复
就是一般的回溯啊,很快的
neptunez
2003-02-13
打赏
举报
回复
不会吧。。为什么只要0.58秒就过了这次,上次30秒都没有过。。
我是没有考虑奇数直接不用算。难道test data里面很多奇数?
neptunez
2003-02-13
打赏
举报
回复
for(i=result[k-1]%2+1;i<=N;i+=2)
这里我用的全搜索。。
你的速度也很慢呀,,
是20的时候也要上到分钟的。。
难道通过了?
neptunez
2003-02-13
打赏
举报
回复
什么意思啊,,
我是回溯做的。。也没觉得哪里无谓搜索了。。n=20的时候要几分钟的时间。。
ZOJ
1457
Prime
Ring
Problem(dfs+剪枝)
Prime
Ring
Problem Time Limit: 10 Seconds Memory Limit: 32768 KB A
ring
is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and
ZOJ
1457
Prime
Ring
Problem(DFS)
数据很小,本来以为能轻松过,但是把数据输入后长时间不出结果,想必然超时。10s啊。。。
然后从网上得知奇数的时候不能出来正常结果,所以时间省了很多,然后又发现看错题了,数据是小于20的,也就是在2到18之间,悲剧,提交之后AC。
dfs函数竟然一下子写成功了,罕见。。。。
#include
#include
#include
ring.h> #include
ZOJ
1457
Prime
Ring
Problem @Z
http://acm.
zju
.edu.cn/onlinejudge/showProblem.do?problemCode=
1457
http://acm.hdu.edu.cn/showproblem.php?pid=1016 96年的上海。题意,1~N围成一圈,每相邻俩数和必须为质数,第一位必须是1,按字典序输出。水题,深搜,每一个位置判断一下与前一个和是否为质数。最后一位再判
hdu 1016 && zoj
1457
Prime
Ring
Problem (dfs)
题目链接:http://acm.
zju
.edu.cn/onlinejudge/showProblem.do?problemCode=
1457
解题报告:在zoj第一次提交的时候竟然是TLE,让我很是费解,然后把判断素数的方法变成直接打表的方法 ,以为这样可以节省很多的时间,结果还是TLE(hdu上此时就可以Ac),后来试了一下数字19,结果很久都没有跑出结果,感觉应该是这的问题,我就把...
zoj
1457
-
Prime
Ring
Problem
http://acm.
zju
.edu.cn/onlinejudge/showProblem.do?problemId=457
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章