P2328 [SCOI2005]超级格雷码

暴力出奇迹喵!

这是一道模拟题

你会发现和 P5657 格雷码【民间数据】有异曲同工之妙,这道题直接按照上边链接题目的操作步骤 暴力模拟 就可以啊

我们观察 n=2n=2n=2 时候格雷码是这样操作的

在线引用链接题面描述:

带大家模拟一下:

比如 n=4

先生成1位:

也就是 0,1,2,3

然后生成两位:

也就是先把上一层的复制下来,顺序排好,然后再逆序排一遍,然后再顺序排一遍,再逆序排一遍。。。然后一小层作为一个分界,每一层的最左端都依次加上相应的字符 0,1,2,,,n-1

00 , 01 , 02 , 03 ,

13 , 12 , 11 , 10 ,

20 , 21 , 22 , 23 ,

33 , 32 , 31 , 30

n,B取其他值的时候也是一样的模拟

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<queue> using namespace std; typedef long long ll; inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} const int maxn=;
string s[maxn],a[maxn];
int n,b,tot=,cnt=;
bool flag=; char chang(int x)
{
char p;
if(x<=) p=(char)(x+);
else{
p=(char) +x-;
}
return p;
} void work1(int k)
{
char p=chang(k);
for(int i=;i<=tot;i++){
s[cnt]=p+a[i];
cnt++;
}
} void work2(int k)
{
char p=chang(k);
for(int i=tot;i>=;i--){
s[cnt]=p+a[i];
cnt++;
}
} int main()
{
n=read();b=read();
tot=b;
for(int i=;i<=tot;i++){
char p=chang(i-);
s[i]+=p;
}
for(int t=;t<=n;t++){
flag=;
cnt=;
for(int i=;i<=tot;i++) a[i]=s[i];
for(int k=;k<b;k++){
if(flag==) work1(k);
else work2(k);
flag^=;
}
tot=cnt-;
}
for(int i=;i<=tot;i++) cout<<s[i]<<"\n";
return ;
}

P2328 [SCOI2005]超级格雷码的更多相关文章

  1. 2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空)

    2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空) https://www.luogu.com.cn/problem/P2328 题意: 输出n位B进制的格雷码. 分析: ...

  2. 1081: [SCOI2005]超级格雷码

    1081: [SCOI2005]超级格雷码 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 301  Solved: 159[Submit][Statu ...

  3. 【BZOJ1081】[SCOI2005]超级格雷码(搜索)

    [BZOJ1081][SCOI2005]超级格雷码(搜索) 题面 BZOJ 洛谷 题解 找个规律吧,自己随便手玩一下,就按照正常的顺序枚举一下,发现分奇偶位考虑正序还是逆序就好了. #include& ...

  4. bzoj1081: [SCOI2005]超级格雷码(dfs)

    1081: [SCOI2005]超级格雷码 题目:传送门 题解: 又是一道水题... 因为之前做过所以知道规律: 如n=2 B=3: 00 10 20    21 11 01    02 12 22 ...

  5. BZOJ1081[SCOI2005]超级格雷码

    Description 著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个 ...

  6. [BZOJ 1081] [SCOI2005] 超级格雷码 【找规律】

    题目链接:BZOJ - 1081 备注:此题BZOJ上貌似没有 spj ,要把一般顺序的每个格雷码倒着输出...比如 0102 输出为 2010 题目分析 就是按照 Gray 码的生成方法写前几个出来 ...

  7. [SCOI2005]超级格雷码

    题目 BZOJ 洛谷 做法 爆搜真有意思 满足不重复且异或后仅一位为\(1\) 利用奇偶性交叉搜索(仅改变一位) My complete code #include<bits/stdc++.h& ...

  8. [bzoj1081]超级格雷码

    手动模拟一组样例,可以理解大致应该如何操作具体实现中,记录每一位当前应该+1还是-1,然后操作最低的位并将后面的+1和-1全部取反即可 1 #include<bits/stdc++.h> ...

  9. [LeetCode] Gray Code 格雷码

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

随机推荐

  1. xposed自定义参数

    java反射机制允许在不显式调用类及类方法的前提下,实现创建类对象.调用类方法等一系列操作. 目标函数为TestArray,其参数为我们自定义的Person类的数组. public class tes ...

  2. CAD二次开发之入门坑

    如果没有引用第一个dll,则会报未找到引用CommandMethod

  3. sql基础的基础

    一.数据定义语言(DDL) create table alter table drop table create index alter index drop index create view dr ...

  4. css 布局方式

    布局方式 1 布局:设置元素在网页中的排列方式及显示效果 2 分类: 1 标准流布局(文档流,普通流,静态流) 是默认的布局方式 特点:将元素按照书写顺序及元素类型,从上至下,从左至右排列 2 浮动布 ...

  5. java实现网络请求超时自动熔断

    原文:https://www.jianshu.com/p/326465500d1c?utm_campaign 使用场景 之前在实现熔断降级组件时,需要实现一个接口的超时中断,意思是,业务在使用熔断降级 ...

  6. Paper Reading:推荐系统评价指标综述

    论文:推荐系统评价指标综述 发表时间:2012 发表作者:朱郁筱,吕琳媛 论文链接:论文链接 本文对现有的推荐系统评价指标进行了系统的回顾,总结了推荐系统评价指标的最新研究进展,从准确度. 多样性.新 ...

  7. Java基础 与时间日期相关的类:System -Date -SimpleDateFormat -Calendar类 -解决后缀.000Z 的时区问题

    笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年 ...

  8. postgresql backup

    #!/bin/sh # Database backup script # Backup use postgres pg_dump command: # pg_dump -U <user> ...

  9. swoole组件----mysql查询,插入数据

    注意!任何swoole函数都应该包含在go(function(){}) 经典查询方法query() go(function (){ $swoole_mysql = new Swoole\Corouti ...

  10. C# 使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。

    this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: Application.Exit();  强制所有消息中止,退出 ...