(深搜)HDU 1016-Prime Ring Problem

原题链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1016


感悟:

这题一看就是递归+深搜+回溯,本来的写的代码已经可以输出正确答案,但是大部分判断都是循环,怕过不了,结合其他一些博主的代码,优化了一下。特别是用flag表示是否数组这一招比较佩服,用内存换时间,本来还是列素数表,循环判断会多用很多时间。
对于回溯了解的还不是很多,目前看来是设置一个标识,在继续搜索之前开启一下,再在返回的时候取消
格式问题:每行后面不能留空,是每行之后空一行,不是两行间空一行。


c++代码:

复制代码
 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstring>
 4 using namespace std;
 5 int prime[38]={0, 0, 1, 1, 0, 1, 0,
 6                1, 0, 0, 0, 1, 0, 1,
 7                0, 0, 0, 1, 0, 1, 0,
 8                0, 0, 1, 0, 0, 0, 0,
 9                0, 1, 0, 1, 0, 0, 0,
10                0, 0, 1,};
11 int line[25];
12 int vis[25];
13 int n;
14 bool isSu(int a);
15 void ss(int x);
16 int main(){
17     int time=0;
18     while (cin >> n){
19         memset(line, 0, sizeof(line));
20         memset(vis,0,sizeof(vis));
21         line[0] = 1;
22         vis[1]=1;
23         cout << "Case " << ++time << ":" << endl;
24         if(n%2==1){
25             cout << endl;
26             continue;
27 
28         }
29         ss(1);
30         cout << endl;
31     }
32     return 0;
33 }
34 bool isSu(int a){
35     if(prime[a]){
36         return true;
37     }
38     return false;
39 }
40 void ss(int x){
41     if (x == n&& isSu(line[x - 1] + line[0]) ){
42         for (int i = 0; i < n; i++){
43             cout << line[i];
44             if(i!=n-1){
45                 cout<<" ";
46             }
47         }
48         cout << endl;
49     }
50     else{
51         for (int i = 2; i <= n; i++){
52             if (!vis[i] && isSu(i+line[x-1])){
53                 line[x] = i;
54                 vis[i]=1;
55                 ss(x + 1);
56                 vis[i]=0;
57             }
58         }
59     }
60 
61 }
复制代码

 

 
posted @   tak_fate  阅读(177)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· Tinyfox 发生重大改版
点击右上角即可分享
微信分享提示