素数环问题
来源:互联网 发布:ucosiii软件定时器 编辑:程序博客网 时间:2024/05/02 04:29
把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
C++代码:
#include <iostream>#include <vector>#include <cmath>using namespace std;//打印结果void printSolution(const vector<int> &v){ for (vector<int>::const_iterator it = v.begin();it != v.end();++it) { cout<<*it<<' '; } cout<<endl;}//检查数字j是否和前面以放的数字重复bool check1(const vector<int> &v, int i, int j){ for (int k=0;k<i;++k) { if (j == v[k]) { return false; } } return true;}//检查数n是否是素数bool check2(int n){ int tmp = sqrt(double(n)); for (int k=2;k<=tmp;++k) { if (n%k == 0) { return false; } } return true;}//检查数j是否和第i-1个数的和构成素数,如果i为最后一个位置,则还要检查j和第一个数的和是否构成素数bool check3(const vector<int> &v,int i,int j){ int sz = v.size(); if (i == sz -1 ) { return check2(v[i-1] + j) && check2(v[0] + j); } else { return check2(v[i-1] + j); }}//第i个位置放jvoid fun(vector<int> &v,int i){ for (int j=1;j<=20;++j) { if (check1(v,i,j) && check3(v,i,j)) { v[i] = j; //放满20个数,则打印结果 if (i == v.size()-1) { printSolution(v); } else { //递归 fun(v,i+1); } } }}int main(){ vector<int> v(20, 0); v[0] = 1; fun(v,1); return 0;}
0 0
- 素数环问题
- 素数环问题
- 素数环问题
- 素数环问题
- 素数环问题
- 素数环问题
- 素数环问题 hdu1016
- 素数环问题
- 素数环问题
- 素数环问题
- 素数环问题
- XDOJ1010--素数环问题
- 求解素数环问题
- 素数环问题
- 1008 素数环问题
- 素数环问题
- 1230 -- 素数环问题
- 素数环问题
- 比赛排名--拓扑排序
- Java中使用Jedis操作Redis
- 关于Cocoapods安装的小细节错误
- 计算机视觉--图像导数-图像梯度向量
- 手机安全卫士02
- 素数环问题
- 数组型队列(queue)的使用(支持自定义数据类型)(C++版)
- iOS开发中如何管理多个版本的Cocoapods、gem
- HDU 1754 I Hate It 线段树
- 二叉树遍历
- iOS语言国际化
- 扣丁音乐(一)——闪屏页SplashActivity(欢迎界面)
- cmake 提示gcc或交叉编译 broken
- leetcode(1),reverse(python)