JZOJ 2136. 【GDKOI2004】汉诺塔

traveller-ly 2018-07-19 原文

JZOJ 2136. 【GDKOI2004】汉诺塔

Description

  古老的汉诺塔问题是这样的:用最少的步数将N个半径互不相等的圆盘从1号柱利用2号柱全部移动到3号柱,在移动的过程中小盘要始终在大盘的上面。
  现在再加上一个条件:不允许直接把盘从1号柱移动到3号柱,也不允许直接把盘从3号柱移动到1号柱。
  把盘按半径从小到大用1到N编号。每种状态用N个整数表示,第i个整数表示i号盘所在的柱的编号。则N=2时的移动方案为:
  (1,1)=>(2,1)=>(3,1)=>(3,2)=>(2,2)=>(1,2)=>(1,3)=>(2,3)=>(3,3)
  初始状态为第0步,编程求在某步数时的状态。
 

Input

  输入文件的第一行为整数T(1<=T<=50000),表示输入数据的组数。
  接下来T行,每行有两个整数N,M(1<=n<=19,0<=M<=移动N个圆盘所需的步数)。

Output

  输出文件有T行。
  对于每组输入数据,输出N个整数表示移动N个盘在M步时的状态,每两个数之间用一个空格隔开,行首和行末不要有多余的空格。
 

Sample Input

4
2 0
2 5
3 0
3 1

Sample Output

1 1
1 2
1 1 1
2 1 1
 
做法:模拟然后找规律, 具体看代码啦
 
代码如下:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <string>
 4 #include <algorithm>
 5 using namespace std;
 6 int t;
 7 long long n, m; 
 8 
 9 int main()
10 {
11     scanf("%d", &t);
12     int g[6] = {1, 2, 3, 3, 2, 1};
13     while (t--)
14     {
15         scanf("%lld%lld", &n, &m);
16         long long p = 6, p2 = 1;
17         for (int i = 1; i <= n - 1; i++)
18         {
19             printf("%d ", g[(m % p) / p2]);
20             p *= 3;
21             p2 *= 3;
22         }
23         printf("%d", g[(m % p) / p2]);
24         if (t != 0)    printf("\n");
25     }
26 }

 

发表于 2018-07-19 21:06 执迷于沿途风景的旅人 阅读() 评论() 编辑 收藏

 

版权声明:本文为traveller-ly原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/traveller-ly/p/9338402.html

JZOJ 2136. 【GDKOI2004】汉诺塔的更多相关文章

  1. JZOJ 4269. 【NOIP2015模拟10.27】挑竹签

    JZOJ 4269. 【NOIP2015模拟10.27】挑竹签 4269. 【NOIP2015模拟10.27】 […]...

  2. JZOJ 3385. 【NOIP2013模拟】黑魔法师之门

    JZOJ 3385. 【NOIP2013模拟】黑魔法师之门 3385. 【NOIP2013模拟】黑魔法师之门  […]...

  3. JZOJ 1266. 玉米田

    JZOJ 1266. 玉米田 1266. 玉米田(cowfood.pas/c/cpp) (File IO):  […]...

  4. JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)

    JZOJ 3462. 【NOIP2013模拟联考5】休息(rest) 3462. 【NOIP2013模拟联考5 […]...

  5. JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C

    JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C 3509. 【NOIP2013模拟11. […]...

  6. JZOJ 1264. 乱头发节

    JZOJ 1264. 乱头发节 1264. 乱头发节(badhair.pas/c/cpp) (File IO) […]...

  7. JZOJ 3382. 【NOIP2013模拟】七夕祭 (Standard IO)

    JZOJ 3382. 【NOIP2013模拟】七夕祭 (Standard IO) 3382. 【NOIP201 […]...

  8. JZOJ 3223. 【HBOI2013】Ede的新背包问题

    JZOJ 3223. 【HBOI2013】Ede的新背包问题 3223. 【HBOI2013】Ede的新背包问 […]...

随机推荐

  1. Spring Boot 入门(五):集成 AOP 进行日志管理

    本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇 […]...

  2. Java设计模式之工厂设计模式

    1.什么是-工厂设计模式 工厂模式有多种写法,你可以通过继承父类来实现,实现抽象类的方法或者实现接口。然而工程 […]...

  3. 【vim】vim配置教程+源码

    目录 前言 参考链接 简单配置后的vim效果 vim 优点 vim 配置 vim 配置方法一 vim 配置方法 […]...

  4. Mysql双机热备配置(超详细多图版)

    一、双击热备介绍 1.基本概念 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中 […]...

  5. 数据结构 复习笔记 数组和广义表以及树的基本概念

    2-1 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元 […]...

  6. 控制台程序一闪而过在执行的时候

    控制台程序一闪而过在执行的时候   原因:点击执行后是默认进行了调试,调试成功后是立即关闭了 解决办法:1.菜 […]...

  7. 干货丨DolphinDB与Elasticserach在金融数据集上的性能对比测试 – luzhouxiaoshuai

    干货丨DolphinDB与Elasticserach在金融数据集上的性能对比测试 Elasticsearch是 […]...

  8. 如何用Matlab处理.wfm格式的数据

      从示波器中捕获的波形处理,此代码源于https://ww2.mathworks.cn/matlabcent […]...

展开目录

目录导航