本BLOG简介(内有一道UVa524素数环进阶版)【B001】
【B001】Hi,大家好,今天我的博客第一天开通,今天奉上开博题,出自首都师师范大学附属中学OJ(题号未知在练习场中)原题为UVa524,题目要求如下:
【难度B】————————————————————————————————————————————————————————————————————————————————————————————
【题目要求】输入正整数n,用整数1,2,3,……,n 的某种排列组成一个环,使任意相邻的两数和均为素数。输出时从整数1开始逆时针排列,同一个环恰好输出一次。 有多种可能的排列,输出时按照字典序小的排列先输出的原则。
【输入要求】一个正整数n
【输入示例】
6
【输出实例】
2
1 4 3 2 5 6
1 6 5 2 3 4
【其他要求】数据范围:n〈=16
【试题分析】各位读者首先想到的是暴搜但当n为12时就已经慢得要命,此题必用回溯法(有点像dfs深搜)。
【代码】
#include <cstdio>
#include <cstring> int A[20], vis[20];
int n;
int t=0; int is_prime(int n)//判断质数
{
for(int i = 2; i*i <= n; i++)
if(n % i == 0) return 0;
return 1;
} void js(int xx)
{ if(xx == n && is_prime(A[0]+A[n-1]))
{
t++; } for(int i = 2; i <= n; i++)//尝试每一个数
if(vis[i] == 0 && is_prime(i+A[xx-1]))//判断是否和为质数
{
A[xx] = i;
vis[i] = 1;
js(xx+1);
vis[i] = 0;//清除标记
} }
void dfs(int cur)
{ if(cur == n && is_prime(A[0]+A[n-1]))
{
t++; } if(cur == n && is_prime(A[0]+A[n-1]))
{ for(int i = 0; i < n; i++)
{
printf("%d", A[i]);//打印方案
printf("%s", i == n-1 ? "\n" : " ");
}
return;
}
for(int i = 2; i <= n; i++)//尝试每一个数
if(vis[i] == 0 && is_prime(i+A[cur-1]))//判断是否和为质数
{
A[cur] = i;
vis[i] = 1;
dfs(cur+1);
vis[i] = 0;//清除标记
} } int main()//调用
{
#ifdef LOCAL #endif
int kase = 0;
while(scanf("%d", &n) != EOF)
{
memset(vis, 0, sizeof(vis));
A[0] = 1;
vis[1] = 1;
js(1);
printf("%d\n", t);
dfs(1);
}
return 0;
}
【注】此代码以AC稍有累赘,请各位读者多多指教(话说我一直粗心没看见示例中的2结果WA了4次)
本BLOG简介(内有一道UVa524素数环进阶版)【B001】的更多相关文章
- Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif
Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif 一丶__str__ 和 __repr__ ...
- 素数环问题[XDU1010]
Problem 1010 - 素数环问题 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 972 Acc ...
- Prime Ring Problem + nyoj 素数环 + Oil Deposits + Red and Black
Prime Ring Problem Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...
- nyist 488 素数环(搜索+回溯)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 有一个整数n,把从1到n的数字无反复的排列成环,且使每相邻两个数(包含首尾)的和都为素数,称为素数环. ...
- Hdu 1016 Prime Ring Problem (素数环经典dfs)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 【DFS】素数环问题
题目: 输入正整数n,对1-n进行排列,使得相邻两个数之和均为素数,输出时从整数1开始,逆时针排列.同一个环应恰好输出一次.n<=16 如输入: 6 输出: 1 4 3 2 5 6 1 6 5 ...
- HDU 1016 Prime Ring Problem(素数环问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- 素数环 南阳acm488(回溯法)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- UVA 524 素数环 【dfs/回溯法】
Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers ...
随机推荐
- java常用工具类(java技术交流群57388149)
package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. ...
- sqlserver 数据库中时间函数的建立
create function [dbo].[HtoSec](@lvalue as int)RETURNS intBEGINDECLARE @temp intSet @temp = @lvalue * ...
- 树形DP习题
听闻noip要考树形DP,本蒟蒻万分惶恐,特刷一坨题目,以慰受惊之心. codevs 1486 /*和非常出名的"选课"是一个题*/ #include<cstdio> ...
- Xcode - 修改变量名、类名及字符串的替换操作
在做iOS开发代码优化的工作时,优化代码结构之前,我们应该先整理好工程的外貌,将文件和类的命名进行规范,在Xcode中为我们提供了方便而强大的名称修改功能. 第一步:修改类名 将鼠标点击放在类的名称上 ...
- NYOJ之XX和OO
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAI0CAIAAABgWyN9AAAgAElEQVR4nO3dPW7jyt4n4NmEcy/EaW
- bnu24252 海盗分赃
题目链接:http://www.bnuoj.com/v3/problem_show.php?pid=24252 这是四川2012年省赛的一道题,背景:海盗分宝藏.大概题意:给你N种价值的物品,物品有两 ...
- .net学习笔记---xml序列化
XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程.反序列化则是从XML输出中重新创建原始状态的对象.XML序列化中最主要的类是XmlSerializer类.它的最重要的方法是 ...
- ASP.NET Web API 数据验证
第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) ...
- EXCEL中汉字转大写拼音
最近一直没有什么成系统的学习东西,也就没写什么随笔.昨天晚上,一哥们儿说给弄个输入汉字直接转拼音的程序,问了他几点需求,说你想做个啥的,最后,他说想做个EXCEL的,现在发现EXCEL确实是个好东西啊 ...
- java中常用的工具类(一)
我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...