链接:https://ac.nowcoder.com/acm/contest/3570/H
来源:牛客网

题目描述

There was a magic necklace. The necklace is made of magical gems
numbered 1 through n. Unfortunately, the necklace was accidentally
broken yesterday. Every gem was scattered on the ground. Now you need
to restring the magic necklace with these n gems. In order to keep the
necklace magical, adjacent numbered gems cannot be placed next to each
other in the new necklace. Please output the number of ways to
successfully restring the necklace. If the relative positions of the
gems are the same, we think these are the same case. 输入描述: The first
line of the input contains one integer t — the number of test cases.(t
≤ 110) The next t lines contain test cases. Each line contains a
positive integer n(0 ≤ n ≤ 11)describing a test case. 输出描述: For each
test case, output a line containing an integer which indicates the
answer.

示例1
输入

3
1
2
5

输出

1
0
1

说明

The two pictures above show the same method.

思路如下

数据范围最大就到n = 11,dfs爆搜即可得到答案,由于题面是多组,需要预处理出答案以免TLE,还有这一题的去掉不符合题的情况也是很重要的

结题如下

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>using namespace std;int n,Ans,t;
int vis[105],ans[15];   //vis存放每种情况,ans存储1~11个数字对应的答案void dfs(int cur,int fa,int cnt,int x)      //cnt表示递归了多少层、x表示要处理的数
{if(cnt == x && cur != 2){Ans++;          //每种情况对应的方案数return;}else if(cnt == x) return;for(int i = 1;i <= x; i++){if(vis[i]) continue;if(i == fa || i == cur) continue;if(abs(i - cur) == 1) continue;vis[i] = 1;dfs(i,cur,cnt + 1,x);vis[i] = 0;}
}void init(int x){for(int i = 1;i <= x; i++) vis[i] = 0;vis[1] = 1;         //这里我们假定对应没个数字方n 我的都让方案以 1 开头(所以要把vis[1]进行标记),既然对应每个数字n方案的开头为1,则结尾就一定不能为2Ans = 0;dfs(1,0,1,x);ans[x] = Ans / 2;   //这里的得到的方案数为什么要除以2 ? ,这是因为方案中会有一半是重复的(还是举数字 n == 3这个例子来说吧:1 3 5 2 4 6 与 1 6 4 2 5 3 除了开头相同,其它的部分完全就是颠倒一下,这对与题意来说这两种情款完全是相同的),下面给出6的所有出现的方案Ans(包括重复的)/*n == 6 的所有Ans方案数1 3 5 2 4 61 3 5 2 6 41 3 6 4 2 51 4 2 5 3 61 4 2 6 3 51 4 6 2 5 31 5 2 4 6 31 5 3 6 2 41 6 3 5 2 41 6 4 2 5 3*/
}int main()
{for(int i = 1;i <= 11; i++) init(i);ans[1] = 1;ans[0] = 0;scanf("%d",&t);while(t--){scanf("%d",&n);printf("%d\n",ans[n]);}
}

H、Magic necklace相关推荐

  1. sed之G、H、g、h使用

    前言 作者不善言谈,如有错误请指正!!! 转载请注明出处!!! sed之G.H.g.h使用 什么是sed? sed是面向流的行编辑器,所谓面向流,是指接受标准输入的输入,输出内容到标准输出上. sed ...

  2. 移动信号突然变成无服务器,为什么移动4G信号突然变成H、E、G就无法上网, 背后的真实原因?...

    原标题:为什么移动4G信号突然变成H.E.G就无法上网, 背后的真实原因? 日常生活中经常会遇到这样的事,坐在车上手机信号栏刚刚还显示4G,突然变成字母H.E.G,或者4G后面多一个+,变成4G+.相 ...

  3. 删除 字符串中‘*’号 两端的除外。指针h、p分别指向第一个和最后一个字符

    //删除 字符串中'*'号 两端的除外.指针h.p分别指向第一个和最后一个字符 #include <stdio.h> void fun( char *a, char *h,char *p ...

  4. 本周XR新闻:吴德周成立AR硬件公司,SideQuest支持PICO、Magic Leap

    本周AR/VR大新闻,AR方面:吴德周成立AR硬件公司"致敬未知科技":彭博称苹果AR操作系统或命名"xrOS":AR眼镜开源方案OpenAR亮相:Epic 3 ...

  5. 手机信号上的G、E、O、3G、H、H+是什么意思?

    手机信号上的G.E.O.3G.H.H+是什么意思?   使用智能手机的朋友会发现,在手机信号旁边都会有一些奇怪的字母,比如3G.E.H等等,这些字母都代表什么意思呢?哪种网络状态速度最快?下面让我们详 ...

  6. 计算机上1e153代表什么意思,手机网络信号G、E、3G、1X、H、4G及LTE各代表什么意思?...

    手机4G网络时代的到来,就像大多数朋友预料的一样,资费标准并没有大幅度的下调,但是手机上的网络标志,却让更多的朋友摸不着头脑了,真可谓五花八门,那么手机网络信号G.E.3G.1X.H.4G及LTE究竟 ...

  7. Linux ls的三个选项(l、h、a)

    Linux ls的三个选项(l.h.a) 目录 Linux ls的三个选项(l.h.a) ①`ls -l` 以垂直形式列出当前路径的文件 ②`ls -a` 列出当前路径下的隐藏文件 ③`ls -h` ...

  8. Linux入门——ls的三个选项(l、h、a)及速配符(*、?、【】)的使用、clear、cd ~和隐藏文件

    两个小技巧 clear--清理屏幕 在学习有关ls的一些命令前,我们先来清理一下屏幕.不是说让擦屏幕啦,而是来清理屏幕上的命令.怎么清理呢?输入clear并回车就好啦. 按下clear后: 是不是清清 ...

  9. A、B、H、S、N股 各是什么意思

    A.B.H.S.N股 各是什么意思 jamessunrise | 19 十月, 2008 13:54 我国上市公司的股票有A股.B股.H股.N股和S股等的区分.这一区分主要依据股票的上市地点和所面对的 ...

最新文章

  1. SGU 113 Nearly prime numbers
  2. 【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 关键帧数据格式 | 非关键帧数据格式 | x264 编码后的数据处理 | 封装 H.264 视频数据帧 )
  3. 2019牛客暑期多校训练营(第九场)
  4. 不要在nodejs中阻塞event loop
  5. 中线提取算法_综述|线结构光中心提取算法研究发展
  6. mysql的缓存机制是什么意思_MySQL缓存机制详解
  7. 栈帧与操作数栈剖析及符号引用与直接引用的转换
  8. Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验...
  9. swagger连接mysql数据库_一键生成数据库文档,堪称数据库界的Swagger,有点厉害!...
  10. windows配置caffe及matlab/python接口编译和调用(cpu/gpu)
  11. JSP中“预定义变量”的使用
  12. eclipse报错 : One or more constraints have not been satisfied.
  13. 容器技术Docker K8s 36 容器服务ACK基础与进阶-应用与发布管理
  14. 人工智能笔记11 --强化学习
  15. 思科视频会议系统+服务器,Cisco思科MCU5310视频会议系统服务器
  16. Orcle中Database Control - orcl打开错误或者打不开的解决办法
  17. C# 实现登录并跳转界面
  18. 基于再生龙(clonezilla)的系统镜像的备份和还原
  19. Linux 查看与修改mtu值
  20. vue IE兼容性问题汇总

热门文章

  1. 史上最简单的 MySQL 教程
  2. coap协议学习之搭建coap测试环境
  3. 最新联系腾讯客服人工方法
  4. iPhone游戏开发:使用到的工具和技术
  5. python实例(一):验证输入的手机号码是否为中国移动手机号码
  6. 高级开发工程师如何快速晋升为架构师?高级开发工程师与架构师到底有啥区别?
  7. 3.2.6 Sweet Butter香甜的黄油 USACO
  8. javascript中getmonth()的问题
  9. php字符串去掉空,php去掉字符串空
  10. 基于 Java 机器学习自学笔记 (第63-65天:集成学习之AdaBoost)