1-20两两相邻和为素数的所有组合(深搜)
来源:互联网 发布:网络打印机ip地址设置 编辑:程序博客网 时间:2024/06/05 18:55
纯深搜
#include<iostream>#include<algorithm>#include<vector>#include<fstream>using namespace std;int status[21]; //status[i]==0表示当前路径path包含iofstream out("output.txt");bool isPrime(int n){if(n==2) return true;if(n==1||n%2==0) return false;int k = sqrt(n);for(int i=3;i<=k;i+=2) if(n%i==0) return false;return true;}bool dfs(vector<int> &path, vector<vector<int> > &res){if(path.size()==20){res.push_back(path);for(auto &i:path) out<<i<<" "; out<<endl;return true;}int i;for(i=1;i<=20;i++){if(status[i]==0) continue;if(!path.empty()){if(!isPrime(path.back()+i)) continue;else{if(path.size()==19 && !isPrime(path[0]+i)) continue;else;}}//当前将i加入path是合适的status[i]--;path.push_back(i);dfs(path,res);status[i]++;path.pop_back();}}int main(){//初始化statusfor(int i=1;i<=20;i++) status[i]=1;vector<int> path;vector<vector<int> > res;dfs(path,res);cout<<"done!"<<endl;return 0;}
0 0
- 1-20两两相邻和为素数的所有组合(深搜)
- 关于相邻两数之和为素数的解答
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。
- 两种方式求1--100以内所有相邻奇偶数之积的和
- 将1、2、...、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。
- 给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数(百度2014,面试)
- 给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数。
- 给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数
- 一个排好序的数组,找出两数之和为M的所有组合
- 一个排好序的数组,找出两数之和为m的所有组合
- 排好序的数组中,找出两数之和为m的所有组合
- 一个数组,找出两数之和为m的所有组合
- 一个数组,找出两数之和为m的所有组合
- Sql处理两条相邻的语句(比较大小)
- 相邻元素的和&头尾元素两两配对_初学vector对象
- 找出MXN数组中所有不相邻元素,并求出它们的和(相邻的数:前一个数是偶数,后一个数是素数)
- 1-n,从中选择任意两两不同的k个数,输出所有可能的组合,要求不重不漏
- 算法题:给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数。
- ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用
- 【看看你公司好不好】一张图就能让你轻松识别:好公司VS烂公司
- 文件信息
- Tomcat6.0安装配置及其在MyEclipse10上的配置
- Unity3D学习之(粒子系统以及相机的跟随)
- 1-20两两相邻和为素数的所有组合(深搜)
- System.out.println和System.err.println的区别
- java内存回收
- java.util.arraylist类 toArray()方法
- Git命令学习总结(-)
- 打造极致Material Design动画风格Button
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
- springmvc基于java config的实现
- Unity学习之粒子系统及摄像机