题目大意:旋转鼓的表面分成m块扇形,如图所示(m=8)。图中阴影区表示用导电材料制成,空白区用绝缘材料制成,终端a、b和c是3(k=3)处接地或不是接地分别用二进制信号0或1表示。因此,鼓的位置可用二进制信号表示。试问应如何选取这8个扇形的材料使每转过一个扇形都得到一个不同的二进制信号,即每转一周,能得到000到111的8个数。

那我们现在把旋转鼓的表面分成m块扇形,每一份记为0或1,使得任何相继的k个数的有序组(按同一方向)都不同,对固定的k,m最大可达到多少,并任意输出符合条件的一个这样的有序组。

Input
每个case输入一个数k (2<=k<=11),表示图中所示的abc这样的接地线的数量。
Output
每个case输出m所能达到的最大值 ,并且输出字典序最小的一个符合条件的有序组,中间用空格隔开。Case间没有空行。有序组输出的格式为:00010111(k=3,只输出一个周期
(0001011100010111……),并且首尾刚好是相接的)。

Sample Input
3
Sample Output
8 00010111

讲道理,这题太抽象了,参考网上大神的代码,还只是迷迷糊糊,GET不到点,还是技术不够啊,大体思路就是模拟一下旋转鼓接地线的旋转过程,每次旋转即删去第一个数,然后在最后加一个0(a<<1&((1<<k)-1))或1(a<<1&((1<<k)-1)+1),同时标记出现过的数字,保证每个出现的数字都不同。貌似是还用到了图论里面的知识,留下了技术不够的泪水。

#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
int N,cnt;//cnt用来记录需要多少位来表示
int num[1<<15];//存放最终结果
int vis[1<<15];
void dfs(int n)
{int a=(n<<1)&((1<<N)-1);int b=a+1;if(!vis[a]){vis[a]=1;dfs(a);num[++cnt]=0;}if(!vis[b]){vis[b]=1;dfs(b);num[++cnt]=1;}}
int main()
{while((scanf("%d",&N))!=EOF){cnt=0;memset(num,0,sizeof(num));memset(vis,0,sizeof(vis));dfs(0);cout<<cnt<<" "; for(int i=1;i<N;i++)cout<<"0";for(int i=cnt;i>=N;i--)cout<<num[i];cout<<endl;}return 0;
}

DeBruijin DFS相关推荐

  1. 深度解读SSH免密登录

    转载自公众号:未闻Code 我们都知道SSH是LINUX下很常用的命令,用来远程登陆其他的LINUX系统.如果只有一台,那也只是一个密码 ,也倒还好.但如果是一个集群,每次都输入密码登录,难免会拉低效 ...

  2. 技巧|BurpSuite实现监听代理流量,隐匿身份

    转载自公众号:HACK之道 那么只能挂代理了,问题又来了,Burp Suite监听的是8080的端口,而SSR或者其他的HTTP代理监听的是其他的端口,如果设置了HTTP代理,那么Burp Suite ...

  3. 记一次反制追踪溯本求源

    转载自公众号:酒仙桥六号部队 前言 朋友说自己服务器巨卡,里边放了一堆项目资料,环境也集成一大堆,身为他bb,义不容辞,必须给他看看,本来以为挺简单的,给杀杀毒,清理一下文件就ok了,没想到搞了挺久, ...

  4. Volatility内存分析工具-某即时通讯软件Windows端数据库密钥的分析

    转载自公众号:取证者联盟 目录 1. 前言 2. 准备工作 3. 内存镜像解析 4. 踩过的坑和感悟 5. 技术要点总结 前言 某年月日,我司在项目中遇到了一个不太常见的需求:根据内存镜像解析电脑中的 ...

  5. Linux下逻辑卷LVM的管理和RAID磁盘阵列

    Linux系统安全 | Linux下逻辑卷LVM的管理和RAID磁盘阵列 原创 谢公子 [谢公子学安全](javascript:void(0);) 昨天 转载自公众号:谢公子学安全 图片 图片 LVM ...

  6. Linux下磁盘分区卸载和磁盘配额

    转载自公众号:谢公子学安全 查看磁盘信息 fdisk : 这个命令是磁盘分区表操作工具,fdisk能将磁盘分区,同时也能为每个分区指定分区类型,总的来说,fdisk就是磁盘工具 · fdisk -l ...

  7. SSH 免密码/免用户名/免IP登录云服务器

    转载自公众号:NightTeam 使用 SSH 密钥进行身份验证可以免去每次都输入密码的繁琐操作,同时账户安全性也得到大幅提高. 图片 以 Centos 为例,SSH 默认存放在 ~/.ssh 目录下 ...

  8. PostgreSQL从未授权到高权限命令执行

    声明 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任. 雷神众测拥有对此文章的修改和解释权.如欲转载或传播此文章,必须保 ...

  9. 狼组安全平台免杀使用指南

    前言 图片 注:理论来说无论是cs还是msf生成的shellcode都可以进行免杀,不过再处理时是以cs为基准对shellcode进行处理的,不保证msf的shellcode也可以免杀后正确执行 关于 ...

最新文章

  1. php接收不到ajax请求参数,我是否需要在ajax请求和接收该请求的php之间编码/解码查询参数?...
  2. 常用基础参数PrintGCDetails回收前后对比讲解
  3. 关于Java中final关键字的详细介绍
  4. 基于REACT和.NET CORE集成WINDOWS身份验证
  5. java原始类型和引用类型_Java中的8种原始类型
  6. HTML期末网页作业-仿QQ官网QQ注册网页
  7. python二维数据读取对齐_python代码要严格对齐
  8. 只显示小方格_excel中最有效率的插件——方方格子
  9. PHP-利用GD库新建图像
  10. 信息安全管理体系(ISMS)
  11. CPU微指令相关概念
  12. python 冒泡排序 交换次数_(Python)交换排序(气泡排序、快速排序),冒泡排序...
  13. 首个实时全球空中交通监控系统在北大西洋上空全面投入运行和试用
  14. python开发系统架构设计师_系统架构设计师岗位自我评价怎么写
  15. 测试温度时共模电压的考虑
  16. MOSFET的SOA
  17. 判断等腰三角形java_JAVA怎么编写程序判断一个三角形是否为等腰三角形
  18. 二值图像blob分析
  19. 图解项目绩效考核明细表实例
  20. 多角度挖掘:亚马逊的移动野心逐渐显露

热门文章

  1. memcache and redis
  2. 解决java.io.IOException: HTTPS hostname wrong: should be
  3. .NET实现对服务器端目录下PDF文件的预览
  4. C++设计模式-Mediator中介者模式
  5. Visual Studio DSL 入门 1 --- 什么是特定领域开发和DSL
  6. Oracle物化视图和普通视图区别
  7. ReentrantLock1.8源码
  8. ESP8266 wifi 模块配置,Wechat+APP控制实现
  9. jQuery学习-显示与隐藏
  10. It企业的上市与退市