素数环问题(回溯法)

2023-11-14

素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。

  现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个数字是1。

#include<iostream>
#include<math.h>
using namespace std;
int n=0;
int a[100];       //对应环 
int visit[100];  //标记数组 0表示未用 1表示已用 
int check(int k)  //判断数字x是否为整数 
{
	int i,n;
	n=(int)sqrt(k);
	for(i=2;i<=n;i++)
		if(k%i==0) return 0;
	return 1;     		
}

void dfs(int step)
{
	if(step==n&&check(a[0]+a[n-1])==1) //全部填满而且第一个元素和最后一个元素满足就输出 
	{
		for(int i=0;i<n;i++)
			cout<<a[i]<<' ';
			cout<<endl;
			return ;
	}
	else
	{
		for(int i=2;i<=n;i++)
		{
			if(visit[i]==0&&check(i+a[step-1])==1){    //i没有被占用且与前一个元素符合 
				a[step]=i;
				visit[i]=1;
				dfs(step+1);
				visit[i]=0;
			}
		}
	}
	
}
int main(void)
{
	cin>>n;
	a[0]=1;  //因为是环所以第一个元素固定 
	visit[1]=1; //1已用 
	dfs(1);	//从第一个元素开始 
	return 0;	
} 

此类回溯问题与八皇后 哈密顿回路问题等都大同小异

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

素数环问题(回溯法) 的相关文章

  • 算法设计-回溯法——装载问题

    算法介绍 回溯法 回溯法又称试探法 回溯法的基本做法是深度优先搜索 是一种组织得井井有条的 能避免不必要重复搜索的穷举式搜索算法 回溯算法的基本思想 从一条路往前走 能进则进 不能进则退回来 换一条路再试 问题实例 问题描述 题目 用回溯法
  • 斐波那契数列的两种解题思路:递归VS迭代

    一 问题描述 要求输入一个整数n 请你输出斐波那契数列的第n项 二 算法分析 给出一系列斐波拉契数列 0 1 1 3 5 8 13 21 通过观察 很容易发现 1 n 0 1 f n f n 1 f n 2 n gt 1 三 算法设计 递归
  • LeetCode 之 剑指 Offer 12. 矩阵中的路径(Java)

    文章目录 LeetCode 之 剑指 Offer 12 矩阵中的路径 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 12 矩阵中的路径 Java 一 题目 剑指 Offer 12 矩阵中的路径 给定一个
  • 4Sum (C++实现)

    Given an array S of n integers are there elements a b c and d in S such that a b c d target Find all unique quadruplets
  • 寻找凸包

    问题 点集 Q 的凸包 convex hull 是一个最小的凸多边形 P Q 中的每个点或在 P 的边界上或 在 P 的内部 我们用 CH Q 表示点集 Q 的凸包 问题定义 输入 平面上的点集 Q 输出 Q 的凸包 CH Q a 请给出一
  • 图形学数学基础之基本蒙特卡罗尔积分(Monte Carlo Integration)

    作者 i dovelemon 日期 2017 07 29 来源 CSDN 主题 Monte Carlo Integration 引言 好久没有写博客了 最近一直在忙于工作 同时GLB库中关于PBR的渲染算法 一直卡住 无法实现下去 不过在这
  • 【刷题版】掌握算法的一揽子计划——深度优先搜索和回溯

    文章目录 深搜和回溯总结 基本概念 常见例题 自然数的拆分 排列型枚举 全排列 I 全排列 II 组合型枚举 组合 I 组合 II N皇后问题 一些简单的树和图上的问题 二叉树的遍历 二叉树的所有路径 岛屿的最大面积 参考资料 深搜和回溯总
  • 520,我会处理回文数了,你会了么?(dp+中心扩散)

    给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 示例 1 输入 babad 输出 bab 注意 aba 也是一个有效答案 示例 2 输入 cbbd 输出 bb 方法一 暴力匹配 Brute Force
  • 2014百度校招笔试

    1 ISO七层说明 2 用百度地图查询 百度大厦 到 北京大学 得到路线不太稳定是怎么回事 分析可能的原因 测试开发唯一区别于软件开发的一题 3 TCP UDP协议的区别 举出上一层的应用协议 二 算法 1 写出a0 a1 a2 an的所有
  • C/C++程序算法小练习--大整数减法

    大整数减法 include
  • 1477. 找两个和为目标值且不重叠的子数组

    1477 找两个和为目标值且不重叠的子数组 题目描述 样例1 样例2 样例3 样例4 示例 5 提示 解题思路 代码实现 题目描述 给你一个整数数组 arr 和一个整数值 target 请你在 arr 中找 两个互不重叠的子数组 且它们的和
  • 字符串合并并处理(C++实现)

    按照指定规则对输入的字符串进行处理 详细描述 将输入的两个字符串合并 对合并后的字符串进行排序 要求为 下标为奇数的字符和下标为偶数的字符分别从小到大排序 这里的下标意思是字符在字符串中的位置 对排序后的字符串进行操作 如果字符为 0 9
  • 将整数n分成k份(回溯)

    Name 将整数n分成k份 回溯 Copyright Author 巧若拙 Date 16 12 18 13 25 Description 将整数n分成k份 将整数n分成k份 且每份不能为空 任意两份不能相同 不考虑顺序 例如 n 7 k
  • 深度优先查找和广度优先查找

    深度优先查找和广度优先查找 在人工智能和运筹学的领域中求解与图有关的许多应用中 这两个算法被 证明是非常有用的 并且 如需高效地研究图的基本性质 例如图的连通性以及图是否存 在环 这些算法也是必不可少的 深度优先查找 深度优先查找可以从任意
  • JS和Java实现链表类的基本功能

    综合网上实例 参考 http www 2cto com kf 201204 126773 html JavaScript实现参考 http m blog csdn net blog caiwenfeng for 23 8496029 Jav
  • 青蛙跳台阶(java)

    一 问题描述 一只青蛙一次可以跳上1级台阶 也可以跳上2级 求该青蛙跳上一个n级的台阶总共有多少种跳法 二 算法分析 因为青蛙一次只能跳上1级台阶或者两级台阶 所以对于第n级台阶来说 青蛙只能从第n 1级台阶或者第n 2级台阶跳上 设青蛙跳
  • 字典序问题

    问题描述 在数据加密和数据压缩中常需要对特殊的字符串进行编码 给定的字母表A 由26 个小写英文字母组成A a b z 该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同 且每个字符最多出现1 次
  • 手把手教你实现一个向量

    文章目录 什么是向量 向量提供哪些接口 实现 宏定义 定义类 成员变量 构造函数与析构函数 构造函数 析构函数 成员函数 size get r put r e expand insert r e remove lo hi remove r
  • 算法基础/递归回溯

    1 17 电话号码的字母组合 题目描述 示例 示例 1 输入 digits 23 输出 ad ae af bd be bf cd ce cf 示例 2 输入 digits 输出 示例 3 输入 digits 2 输出 a b c 解答描述
  • 【代码随想录】回溯算法刷题

    代码随想录 回溯算法 组合 组合总和 III 电话号码的字母组合 组合总和 I 组合总和 II 分隔回文串 复原 IP 地址 子集 I 子集 II 递增子序列 全排列 I 全排列 II 重新安排行程 hard N 皇后 hard 解数独 h

随机推荐

  • datawhale-web-task02

    0 背景 完成datawhale的web入门开发task02的学习 https github com datawhalechina whale web blob master task02 md task02内容如下 用户管理 通过上节课程
  • Linux安装JDK-8-附有百度网盘链接

    前提 全新安装 Linux 64位JDK8链接 提取码 x3s4 JDK官网下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2133151
  • 安装lamp详细版本

    font face font family 宋体 font face font family Verdana p MsoNormal li MsoNormal div MsoNormal margin 0cm 0cm 0 0001pt te
  • Java - 随机文件名生成 - 根据当前时间创建文件夹 - 文件上传后,放置到指定目录下(transferTo方式)

    目录 一 随机文件名生成 具体代码演示 二 根据当前时间创建文件夹 三 文件上传后 放置到指定目录下 参考链接 一 随机文件名生成 具体代码演示 UUID 模块是内置的 public static String getRandomName
  • [论文阅读] (02) SP2019-Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks

    神经清洁 神经网络中的后门攻击识别与缓解 Neural Cleanse Identifying and Mitigating Backdoor Attacks in Neural Networks Bolun Wang Yuanshun Y
  • Qt中使用C++中的std里的线程

    加入新的类 基类一定要选择QObject 使用C 中的thread save av cpp include save av h using namespace std 加入这个就可以使用C 里面的class thread 录制音视频 voi
  • iOS开发之ReactiveCocoa框架(RAC)第五篇队列与高级函数

    h文件 import ViewController h import ReactiveCocoa interface ViewController end implementation ViewController void viewDid
  • AE中绘制图形元素的方法

    AE中绘制图形元素的方法 Element元素对象是一个非常庞杂的对象集合 主要分为两大部分 图形元素 Graphic Element 和框架元素 Frame Element 图形元素包括GroupElement MarkerElement
  • 《大话vxworks》

    目录 序言 第一章 VxWorks简介 1 1 VxWorks的起源 1 2 发展历程 1 3 应用场景 第二章 VxWorks架构
  • 拦截器源码分析

    Slf4j Controller public class BlueController ResponseBody GetMapping bb public String bb HttpSession session return sess
  • 升序定时器的时间链表的完全实现

    李邦柱 helpylee 126 com 1 定时器简介 定时器通常包含至少两个成员 一个超时时间 通常采用相对时间或者超时时间 和一个超时时间到达后的一个回调函数 有时候还可能包含回调函数被执行时需要传入的参数 以及是否重新启动定时器 更
  • Parasoft VS Borland SilkTest,谁的功能测试更全面?

    你知道测试金字塔吗 为了用开发实践来扩大测试规模 如何以正确的数量设计合适类型的自动化测试 测试金字塔是一个很好的指南 测试金字塔是一个很好的视觉隐喻 它描述了不同的测试层 以及每一层要做多少测试 Parasoft测试金字塔 虽然测试自动化
  • 网络安全-信息收集简介

    本文为作者学习文章 按作者习惯写成 如有错误或需要追加内容请留言 不喜勿喷 本文为追加文章 后期慢慢追加 什么是信息收集 信息收集是指通过各种方式获取所需要的信息 以便我们在后续的渗透过程更好的进行 比如目标站点IP 中间件 脚本语言 端口
  • 将pandas.core.frame.DataFrame转换为列表

    将pandas core frame DataFrame转换为列表 上代码 import pandas as pd df pd DataFrame Header A foo a bar a baz a Header B foo b bar
  • 基于unity的AR开发中使用shader遮盖原图像的解决办法

    解决问题 当识别图像并显示虚拟物体成功后 将原图片中存在的物体图像遮盖 使用的识别图形 图中含有瓶子 将该瓶子模型添加为为ImageTarget的子物体 将这个模型位置移动到与图片中瓶子位置一致 create plane 作为ImageTa
  • 为什么软件开发很难外包

    很多公司和团队选择把整个软件项目或项目中某些模块或过程 比如测试 整体外包给另一家公司或团队 本文将和你一起来探讨为什么公司或团队有外包的冲动 为什么项目外包问题多和我对外包的建议 01 为什么有外包的冲动 公司或团队选择把项目外包 无非就
  • 计算机网络知识汇总(超详细)

    目录 第一章 概念 组成 功能 和 分类 计算机网络概念 计算机网络功能 计算机网络的组成 计算机网络的分类 总结 标准化工作及相关组织 标准化工作 标准化工作相关组织 总结 计算机网路的速率 带宽 吞吐量 1 速率 2 带宽 3 吞吐量
  • IT项目管理-个人作业6

    1 教材练习题6 答 a 如下图所示 b 所有路径如下 路径1 A B E H K 10天 路径2 A B E I J K 14天 路径3 A C F H K 12天 路径4 A C F I J K 16天 路径5 A D G J K 15
  • 网络分析工具——WireShark的使用(超详细)

    网络分析工具 WireShark的使用 简介 WireShark软件安装 Wireshark 开始抓包示例 WireShark抓包界面 WireShark 主要分为这几个界面 TCP包的具体内容 Wireshark过滤器设置 wiresha
  • 素数环问题(回溯法)

    素数环是一个计算机程序问题 指的是将从1到n这n个整数围成一个圆环 若其中任意2个相邻的数字相加 结果均为素数 那么这个环就成为素数环 现在要求输入一个n 求n个数围成一圈有多少种素数环 规定第一个数字是1 include