java编程实现素数环_回溯法解决素数环
#include #include using namespace std;#define N 100000int isp[2 * N];int a[N];int visited[N];int is_prime(int n){int i;
/***********************************************************************
输入正整数n,把整数1,2,3……,n组成一个环,使得相邻两个整数之和均为素数,输出时从整数1开始逆时针排序.同一个环应恰好输出一次.n<==16
样例输入:
6
样例输出:
1 4 3 2 5 66
1 6 5 2 3 4
分析:
1、每个环都从1开始,先将数组a[0]赋值1.
2、每选定前一个素数,后一个位置就少一个可选择项,由此可用一个数组bUsed[]来标记状态.
3、前一个后一个选定值总和前一个选定值关联,由此可用回溯法(深度优先遍历的方式遍历解答树)。
************************************************************************/
#include
#include
using namespace std;
int n=0;//输入n<=16
int a[20];
bool bUsed[20];//对应数组a[20],判断对应节点在当前求得素数环中(解答树)是否有它
/*判断是素数*/
bool isp(int n){
if(n<3)
return false ;
int len=(int)sqrt(n+0.0);
for (int i=2;i<=len;i++){
if(n%i==0)
return false ;
}
return true;
}
/*递归输出所有素数环*/
void AA(int cur){
//在最后一层执行,输出当前求得解答串
if(cur==n&&isp(a[0]+a[n-1])){
for (int i=0;i
cout<
cout<
return ;
}
//前n-1层执行,递归选定每一层的整数,使其与前一层的整数之和为素数
else for (int i=2;i<= n;i++){
if(!bUsed[i]&&isp(i+a[cur-1])){//当前值i没被使用,且与前一个选定值之和为素数
a[cur]=i;//选i为当前项值
bUsed[i]=true;//状态从没被使用改为被使用
AA(cur+1);//进入下一层,若cur+1
//递归后面的语句在从n-1层到第1层回调时执行
bUsed[i]=false;//状态还原,使重新求下一个有效串时不被干扰
}
}
}
int main(){
for (int i=0;i<20;i++)
a[i]=i+1;//初始化一个数组1,2,3,4...
memset(bUsed,0,sizeof(bUsed));//全部初始化为false表示均没被使用
while (cin>>n,n){
AA(1);//回溯法遍历解答树,输出所有素数环
}
}
深度优先遍历类似于树的前序遍历。采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-First Search)。相应地, 用此方法
解答树图解如下:
输入正整数n,把整数1,2,3,……,n组成一个环,使得相邻的两个整数之和均为素数。 采用深度优先遍历解答树的方法。这里用RINGLENGTH代替了n,由于要求每个数
java编程实现素数环_回溯法解决素数环相关推荐
- java编程实现素数环_素数环问题(Java)
问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 分析:用回溯算法,考察所有可能的排列.然后通过剪枝(题目中的条件)筛选出可能的排列将其 ...
- java编程实现素数环_结对编程(JAVA实现)
项目成员:黄思扬(3117004657).刘嘉媚(3217004685) 二.PSP表格 PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟) Pla ...
- 素数环问题(回溯法)
素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个 ...
- python 回溯法 01背包问题_回溯法解决01背包问题
回溯法是一个既带有系统性又带有跳跃性的搜索算法. 它在包含问题的所有解的解空间树中按照 深度优先的策略, 从根节点出发搜索解空间树. 算法搜索至解空间树的任一节点时, 总是先判断 该节点是否肯定不包含 ...
- 编程解决素数环问题Java_回溯法解决素数环问题java实现
素数环问题: 输入正整数n,把整数1,2,3--,n组成一个环,使得相邻两个整数之和均为素数,输出所有方案,注意同一个环应恰好输出一次.n<==16 样例输入: 6 样例输出: 1 4 3 2 ...
- JAVA编程习题及答案_完美版
JAVA编程习题及答案_完美版 原创 lingwu7 最后发布于2017-08-15 20:01:12 阅读数 10796 收藏 发布于2017-08-15 20:01:12 版权声明:本文为博主原创 ...
- 回溯法解决部落冲突问题
回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...
- 回溯法解决工作分配问题
回溯法解决工作分配问题 问题描述: 设有n件工作分配给n个人.为第i个人分配工作j所需的费用为c[i][j] .试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最 ...
- c语言 用回溯算法解决01背包问题,回溯法解决01背包问题
<回溯法解决01背包问题>由会员分享,可在线阅读,更多相关<回溯法解决01背包问题(21页珍藏版)>请在人人文库网上搜索. 1.回溯法解决01背包问题,回溯法解决01背包问题, ...
最新文章
- php 比较字符串差,PHP字符串比较函数strcmp()和strcasecmp()使用总结
- 数据结构与算法--绪论
- 一丶宝塔+青龙面板安装部署教程及命令-依赖库
- Deep learning From Image to Sequence
- PHP接口允许ajax跨域访问设置方法(亲测)
- 循环类里面的每一个属性
- [MEGA DEAL]完整的Java捆绑包(96%折扣)
- 【Latex】下标放在符号正下方
- vb6.0企业版win7_比win7更快?官方精简win10:3G+不更新,旧电脑福音
- AGP与PCI-E的区别 PCI-E接口与PCI接口的区别
- 长三角协同优势产业基金正式设立,总规模1000亿
- Administration interface
- 三角形外接圆圆心 算法 删改版
- Unity之物理引擎
- 大数据——海量数据处理的基本方法总结
- Outlook设置新folder location后无法显示default view的解决方案
- 李开复--生命是最严厉的导师
- 电脑使用技巧 快捷键
- mybatis 整合spring之mapperLocations配置的问题
- python获取鼠标的当前坐标