博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回溯算法求素数环
阅读量:5088 次
发布时间:2019-06-13

本文共 1080 字,大约阅读时间需要 3 分钟。

原文地址:

一. 问题描述

把从1到n(n>=2)这n个数摆成一个环,要求相邻的两个数的和是一个素数,找出所有满足条件的环。

二. 问题分析

1> 解向量:<x1, x2, ··· , xn>

2> 解空间树:排列树,(n-1)!个叶子结点

3> 剪枝函数:isPrime( x[t-1]+x[t] ),t=2,3,···,n  约束函数

三. 算法实现

1 #include
2 #include
3 using namespace std; 4 5 int n;//素数环中的数字个数 6 int sum=0;//可行方案数 7 int arr[100];//存放素数环 8 9 bool isPrime(int x)10 {11 int i;12 int k=(int)sqrt(x);13 for(i=2;i<=k;i++)14 {15 if(x%i==0)16 {17 return false;18 }19 }20 return true;21 }22 23 //回溯法24 void backtrack(int t)25 {26 int i;27 if(t>n)//搜索到叶子结点28 {29 if(isPrime(arr[n]+arr[1]))30 {31 sum++;32 for(i=1;i<=n;i++)33 {34 cout<
<<" ";35 }36 cout<
>n)58 {59 sum=0;60 for(i=1;i<=n;i++)61 {62 arr[i]=i;63 }64 backtrack(1);65 cout<<"可行方案数为:"<
<

 

转载于:https://www.cnblogs.com/shutter/p/4734601.html

你可能感兴趣的文章
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>