牛客小白月赛21(模拟汉诺塔)—B Bits
题目连接
题目描述
Nancy喜欢做游戏!
汉诺塔是一个神奇的游戏,神奇在哪里呢?
给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子。
如果盘子数为偶数,则需要将她们全部移动到最右侧的柱子上,否则将她们移动到中间的柱子上。
那么,Nancy该怎样移动呢?请你输出汉诺塔游戏的过程叭!
输入描述:
共一行:一个整数n,表示最开始n个盘子(编号为1到n)的放置方法。
数据满足:2≤n≤11。
输出描述:
共2^n组:每组n+2行,每行 3×(2n+1)+4个字符,用“.”表示空白区域,用“|”表示柱子区域,用“*”表示盘子。组与组之间请输出3×(2n+1)+4个“-”。
具体输出方式请参看样例进行理解。
样例输入
2
样例输出
.
不是说这道题有多难,就是以后不想在写模拟了,虽然这是一道简单的模拟题,还是菜。代码5分钟debug5小时。
思路:模拟
只为了保存下代码,纪念下这水题。
#pragma GCC optimize(3,"Ofast","inline") //G++
#include<bits/stdc++.h>
#define TEST freopen("C:\\Users\\hp\\Desktop\\ACM\\in.txt","r",stdin);
#define mem(a,x) memset(a,x,sizeof(a))
#define debug(x) cout << #x << ": " << x << endl
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll INF=0x7fffffffffffffff;
const int mod=1e9+7;
const int maxn = 1e6+5;
int n,num[10],N;
int LINE;
char s[300005][305];
stack<int>a,b,c;
void solve(int line,int _,stack<int>a)
{
line+=n-a.size();
while(!a.empty())
{
int now=a.

本文详细解析了牛客小白月赛第21场中的一道模拟汉诺塔问题,介绍了游戏规则及编程实现过程,通过代码示例展示了如何模拟汉诺塔游戏,并分享了作者的解题心得。
最低0.47元/天 解锁文章
732

被折叠的 条评论
为什么被折叠?



