时间限制: 1.000 Sec 内存限制: 128 MB
提交: 91 解决: 77
[命题人:][下载数据: ?]
提交状态报告
对于Hanoi的问题想必都已经很熟悉了,现在有N个盘子,从小到大编号1到N,开始时都在第一根柱子上,现在要全部移动到第三根柱子上,整个过程中只能小盘子放在大盘子上面。现在需要你知道第K步移动的是编号为多少的盘子。
输入一行一个正整数,表示测试组数,组数不超过20。
每组测试数据包含两个正整数n和k,n不超过20,k小于2^n。
对于每个数据输出一行,表示移动的盘子的编号。
输入 复制
1 3 4
输出 复制
3
代码:
#include <bits/stdc++.h>
using namespace std;
int s, n, k, c, g = 1;
void hanoi(int n)
{if (n == 0)return;hanoi(n - 1);s++;if (s == k){cout << n << endl;return;}hanoi(n - 1);
}int main()
{cin >> c;while (g <= c){cin >> n >> k;s = 0;hanoi(n);g++;}return 0;
}
本文发布于:2024-01-31 10:08:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170666694427754.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |