(回溯Uva524)素数环

题目

输入正整数,把整数1,2,3,···,n组成一个环,使得相邻两个整数之和均为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。n<=16
样例输入
6
样例输出
1 4 3 2 5 6
1 6 5 2 3 4

分析与解答

用一个数组a存答案,由于是从1开始,a[0]=1,

void DFS ( Vertex V )
{visited[ V ] = true;if(…) return;for ( V 的每个邻接点 W )if ( !visited[ W ] )DFS( W );
}

在这个题中,深搜需要的终止条件,l==n&&isp[A[0]+A[n-1]],l是位置,如果已确定了n个位置,说明此时终止,并且如果第一个a[0]等于a[n-1]说明此时终止,终止的话,从0到n-1输出即可
如果不满足终止条件,我们就找新的数填到位置l,然后递归找下一个位置需要填的数,如何知道该位置填什么数?我们知道第一个数是1,那这个位置的数我们假设是2到n中任一个,循环,如果满足这个数不曾出现而且和上一个位置的数之和为素数,那我们就把这个位置填上这个数,把标记数组标记用来表明这个数已经被用过,并且递归调用找下个位置,我们递归完了还要清除标记数组的标记,就像是找到了一个可能情况,就不断地回溯一样,这样的话最终会找出所有情况

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;int is_prime(int x) {for(int i = 2; i*i <= x; i++)if(x % i == 0) return 0;return 1;
}int n, A[50], isp[50], vis[50];void dfs(int l){if(l==n&&isp[A[0]+A[n-1]]){for(int i=0;i<n;++i)if(i==0) printf("%d",A[i]);else printf(" %d",A[i]);printf("\n");}else{for(int i=2;i<=n;++i)if(!vis[i]&&isp[i+A[l-1]]){A[l]=i;vis[i]=1;dfs(l+1);vis[i]=0;}}
}
int main() {int kase = 0;for(int i = 2; i <= 20*2; i++) isp[i] = is_prime(i);while(scanf("%d", &n) == 1 && n > 0) {printf("Case %d:\n", ++kase);memset(vis, 0, sizeof(vis));A[0] = 1;dfs(1);printf("\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openglshader实现虚拟场景_虚拟演播室设计原则

所谓虚拟演播室&#xff0c;就是利用计算机产生出虚拟的三维背景和道具&#xff0c;然后通过视频合成系统将演员与其进行合成&#xff0c;生成全三维、真人与虚拟布景和道具融合的效果。虚拟演播室系统只需要在一个蓝色背景下进行演播&#xff0c;不需要真正去搭建演播室布景&a…

(回溯 UVa129)困难的串

题目:分析与解答&#xff1a; 题目: 如果一个字符串包含两个相邻的重复子串&#xff0c;则称它是“容易的串”&#xff0c;其他串成为“困难的串”。例如:BB,ABCDACABCAB,ABCDABCD都是容易的&#xff0c;而D、DC、ABDAB、CBABCBA 都是困难的。 输入正整数n和L&#xff0c;…

功率谱 幅值谱_语音合成中的Mel谱和MFCC谱无区别

语音合成目前比较流行的方案是Tacotron(2) WaveNet(WaveRNN, LPCNet)等神经网络声码器。这些方案的流程大致相同&#xff0c;先由文本生成特征谱&#xff0c;再将特征谱重建为音频。在选择特征谱的时候&#xff0c;有的使用了Mel谱&#xff0c;有的使用了倒谱。本文通过梳理计…

DFS实现floodfill算法

题目&#xff1a;分析与解答 题目&#xff1a; 多组案例&#xff0c;每组案例输入一个m行n列的字符矩阵&#xff0c;统计字符‘’组成多少个连通块。如果两个字符‘’所在的格子相邻&#xff08;横、竖或对角线&#xff09;&#xff0c;则说明它们属于同一连通块。 Sample …

c++builder tadoquery存储过程_Electron桌面应用程序从创建项目、启动项目到打包程序的详细过程...

开发环境本文使用环境node12.14.1electron10.1.5electron-builder22.9.1electron-updater4.3.5&#xff1b;操作过程一、新建和启动项目1. 直接使用官网示例&#xff0c;先克隆示例项目的仓库&#xff0c;然后进入该仓库&#xff1b;# 克隆示例项目的仓库$ git clone https://g…

(BFS+hash去重)八数码问题

题目&#xff1a; 编号为1~8的8个正方形滑块被摆成3行3列&#xff08;有一个格子空留&#xff09;。每次可以把与空格相邻的滑块&#xff08;有公共边才算相邻&#xff09;移到空格中&#xff0c;而它原来的位置就称为了新的空格。给定初始局面和目标局面&#xff08;用0表示空…

变速后没有声音_问答 | 现代朗动at,启动后怠速不稳,热车后正常,是什么问题?...

今日老陈问答Q陈工你好&#xff1a;1.手动家车&#xff0c;停车怠速&#xff0c;有挡或空挡行驶都有异响&#xff0c;踩离合异响消失&#xff0c;抬离合异响恢复&#xff0c;换分离轴承未解决&#xff0c;压板轻磨损没更换&#xff0c;舱室粉末没清理 2.手动挡加自动变速箱油行…

怎么加载文件_Java虚拟机从入门到入土之JVM的类加载机制

作者&#xff1a;六脉神剑转载于&#xff1a;https://juejin.im/post/5e1aaf626fb9a0301d11ac8eJVM总体概述JVM总体上是由类装载子系统(ClassLoader)运行时数据区执行引擎内存回收类文件结构以上5个部分组成&#xff0c;每一个都是非常重要的&#xff0c;如果你要了解JVM&#…

的向上取整函数_计算机二级Excel常用函数解析

决定为大家推点干货让大家学习一下Excel的函数应用ABS绝对值 从最简单的开始第一个是ABS函数简而言之就是取绝对值作用就是MAX&MIN函数 这两个函数是好哥们也比较简单的就是从一堆数字中选出最大值和最小值如图C6格所示ROUND函数 四舍五入函数可不是回合ROUND 1算是比较…

(stl排序+检索)大理石在哪

问题&#xff1a; 现有N个大理石&#xff0c;每个大理石上写了一个非负整数、首先把各数从小到大排序&#xff1b;然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x&#xff0c;如果是&#xff0c;还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。 (…

多个 本地仓库_【运维工具】搭建npm私有镜像仓库,天下苦于npm build久矣

​01 前 言当你的研发团队越来越大&#xff0c;或是你无法忍受node超慢的构建时你可以考虑继续读下去&#xff0c;给大家推荐一个基于Verdaccio相对较完整的解决方案。由于环境的原因&#xff0c;我们直接去 http://npmjs.org 下载就不要考虑了&#xff0c;可以将npm config se…

(STL,vector)木块问题

题目&#xff1a; 输入n&#xff0c;得到编号为0~n-1的木块&#xff0c;分别摆放在顺序排列编号为0~n-1的位置。现对这些木块进行操作&#xff0c;操作分为四种。 1、move a onto b&#xff1a;把木块a、b上方的木块放回各自的原位&#xff0c;再把a放到b上&#xff1b; 2、…

地图自定义图标_如何在H5里添加地图导航?这份教程请收藏!

智能手机的出现为我们的生活带来了翻天覆地的改变&#xff0c;比如说衣食住行都有了显著的变化。外卖让就餐更加方便、手机支付也让生活更加便利&#xff0c;地图导航功能更是让大家从此不再迷路&#xff0c;有了手机以后&#xff0c;大家都开始习惯直接用手机搜索目的地&#…

(STL,set)安迪的第一个字典

问题&#xff1a; 输入一个文本&#xff0c;找出所有不同的单词&#xff08;连续的字母序列&#xff09;&#xff0c;按字典序从小到大输出。单词不区分大小写。 样例输入 Adventures in Disneyland Two blondes were going to Disneyland when they came to a fork in the…

ios 高德获取定位_解决ios11不支持高德地图API定位功能的方法

在 iOS 11 系统上访问JS API定位业务失败怎么解决&#xff1f;苹果新发的 iOS 11 操作系统的一大特性是对 http 形式访问页面的限制变得非常严格(相比iOS 10 和 iOS 9)。高德提供的JS API功能均支持http和https两种协议访问&#xff0c;在iOS 11操作系统上推荐使用https形式访问…

(STL,map)反片语

题目 输入一些单词&#xff0c;找出所有满足如下条件的单词&#xff1a;该单词不能通过字母重排&#xff0c;得到输入文本中的另外一个单词。在判断是否满足条件时&#xff0c;不区分大小写&#xff0c;但输出保留输入中的大小写&#xff0c;按字典序进行排列&#xff08;所有…

源码 状态机_LLVM学习笔记(1)--初探源码

一直耳闻LLVM相比于GCC&#xff1a;well documented架构灵活&#xff0c;前后端解耦符合龙书的讲解昨天读到了一篇虽然概括却很周到的llvm入门导引陈钦霖&#xff1a;LLVM Pass入门导引​zhuanlan.zhihu.com就沿着其中的提示探索了下LLVM源码&#xff0c;倒也没有想要成为专业的…

n个数的最小公倍数

文章目录1.利用公式法求两个数最小公倍数2.最大公约数求法3.求几个数的最小公倍数4.例题1.利用公式法求两个数最小公倍数 假设现在要求最小公倍数的两个数为x,y&#xff0c;他们的最大公约数为p,最小公倍数为q。则xypq 2.最大公约数求法 int gg(int a,int b){int c;while(b)…

cv mat的shape_将ndarray转换为cv::Mat的最简单方法是什么?

正如kyamagu建议的那样&#xff0c;您可以使用OpenCV的官方python包装器代码&#xff0c;尤其是pyopencv_to和{}。在我一直在为所有依赖项和生成的头文件而挣扎。然而&#xff0c;可以通过将^{}作为lightalchemist did here进行“清理”来降低复杂性&#xff0c;以便只保留必要…

c语言年月日问题思路总结 闰年非闰年每个月份的天数 解决今天是妹子出生的第多少天的问题

1.闰年非闰年每个月份的天数&#xff1a; int year[2][13]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };经观察发现&#xff1a; a。2月闰年有29天&#xff0c;非闰年28天 b。1、3、5、7、8、10、12月份&#xf…