HDOJ HDU 1016 Prime Ring Problem
来源:互联网 发布:元数据和数据字典 编辑:程序博客网 时间:2024/04/26 16:09
HDOJ 1016 Prime Ring Problem
题目
点此查看 HDOJ 1016 Prime Ring Problem
分类
dfs
题意
求 1 - n 自然数的所有素数环
素数环
相邻两数互为素数的环例 1- 6 的一个素数环
题解
最简单的想法就是暴力枚举,要枚举 N! 个
本觉得会超时,没想到过了
技巧
n 最大为 20 ,dfs时可用32位int记录状态,节约空间
代码
#include <iostream>#include <set>#define max 20using namespace std;int n;set<int> prime; // 素数表int dfs(int * res,int df,int t);int main(){ int r[max]; int tms = 1; prime.insert(2); prime.insert(3); prime.insert(5); prime.insert(7); prime.insert(11); prime.insert(13); prime.insert(17); prime.insert(19); prime.insert(23); prime.insert(29); prime.insert(31); prime.insert(37); prime.insert(41); prime.insert(43); // 由于 相邻两数 最大 20 + 19 故 打表到此足够 while(cin >> n) { cout << "Case " << tms++ << ":" << endl; dfs(r,0,0); cout << endl; }}int dfs(int * res,int df,int t){ if(t == n) { if(!prime.count(res[n-1] + res[0])) return 0; cout << res[0]; for(int i = 1;i < n;i++) cout << " " << res[i]; cout << endl; return 0; } for(int i = 0;i < n;i++) { if(t == 0 && i != 0) continue; if(df & (1 << i)) continue; if(t != 0 && !prime.count(res[t-1] + i+1)) continue; df |= 1 << i; // 位运算记录状态 res[t] = i + 1; dfs(res,df,t+1); df &= ~(1 << i); // 位运算恢复状态 } return 0;}
阅读全文
0 0
- hdu/hdoj 1016 Prime Ring Problem
- HDOJ(HDU).1016 Prime Ring Problem (DFS)
- HDOJ HDU 1016 Prime Ring Problem
- HDOJ 1016 Prime Ring Problem!!
- HDOJ 1016 Prime Ring Problem
- HDOJ 1016 Prime Ring Problem
- hdoj 1016 Prime Ring Problem
- 【HDOJ 1016】Prime Ring Problem
- hdoj 1016 Prime Ring Problem
- hdoj 1016 Prime Ring Problem
- HDOJ 1016 Prime Ring Problem
- HDOJ-【1016 Prime Ring Problem】
- hdoj-1016 Prime Ring Problem
- hdoj 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem
- 虚拟机安装Cent0S 7
- SCI 图像处理 机器学习
- 四张图揭秘中国AI人才现状
- redis高级实用特性
- Dagger2 入门,以初学者角度
- HDOJ HDU 1016 Prime Ring Problem
- SGBM学习记录(一)
- 20:球弹跳高度的计算
- CentOS7.2安装ActiveMQ全过程
- 蜂窝移动的架构 以及省电的方法
- Codeforces851B
- Linux下几款C++程序中的内存泄露检查工具
- C 位级操作
- [LeetCode]20. Valid Parentheses