例题7-4 UVA 524 Prime Ring Problem
来源:互联网 发布:分类信息网站源码 编辑:程序博客网 时间:2024/06/05 00:10
题意:
给你数字n ,求的一个1~n 的数字环,使得任意相邻的数的和为素数! 打印所有解。
思路:
直接素数打表判断素数,回溯法暴力每一个位置的每一个数即可。
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <unordered_map>using namespace std;unordered_map<string,bool>mp;int vis[100];void init(){ int len = sqrt(100+0.5); for (int i = 2; i <= len; ++i) if (!vis[i]) for (int j = i*i; j <= 100; j += i) vis[j] = 1;}int a[100], n, vis2[100];void dfs(int c){ if (c == n) { int m = 100, p; for (int i = 0; i < n; ++i){ if (a[i] < m) m=a[i], p = i; } string t = ""; for (int i = 0; i < n; ++i){ t += a[(i+p)%n] + 48; } if (!mp.count(t)){ for (int i = 0; i < n; ++i) { if (i)printf(" "); printf("%d",a[i]); } puts(""); mp[t] = true; } return; } for (int i = 1; i <= n; ++i){ if (!vis2[i]){ a[c] = i; if (c == 0 || !vis[a[c] + a[(c-1+n)%n]] ){ if (c == n-1){ if (!vis[a[0] + a[n-1]]){ vis2[i] = 1; dfs(c+1); vis2[i] = 0; } continue; } else { vis2[i] = 1; dfs(c+1); vis2[i] = 0; } } } }}int main(){ init(); int ks = 0; while(~scanf("%d",&n)){ mp.clear(); memset(vis2,0,sizeof vis2); if (ks)puts(""); printf("Case %d:\n",++ks); dfs(0); } return 0;}
0 0
- UVa 524 Prime Ring Problem (例题7-4)
- 例题7-4 UVA 524 Prime Ring Problem
- 例题7-4 素数环(Prime Ring Problem, UVa 524)
- UVA 524 - Prime Ring Problem
- uva 524 - Prime Ring Problem
- uva 524 Prime Ring Problem
- UVa:524 Prime Ring Problem
- uva 524 - Prime Ring Problem
- UVa 524 - Prime Ring Problem
- UVA - 524 Prime Ring Problem
- UVa-524 - Prime Ring Problem
- UVA - 524 Prime Ring Problem
- UVa - 524 - Prime Ring Problem
- UVA - 524 Prime Ring Problem
- uva 524Prime Ring Problem
- uva 524 - Prime Ring Problem
- Prime Ring Problem(UVA 524)
- UVA - 524 Prime Ring Problem
- html5(一)基础
- 判断窗口高度
- sql防止注入的方法
- 容易混淆的php函数,个人笔记
- Gradle DSL method not found: 'runProguard'
- 例题7-4 UVA 524 Prime Ring Problem
- linux下查找某文件位置
- 服务器配置
- thinkphp 3.2引入第三方类
- Java--mac下的Intellij IDEA常用快捷键
- hdu 1087 Super Jumping! Jumping! Jumping!
- c/c++混合编程Makefile范例
- C++——KMP模板
- Java——线程正常停止