九连环是一种流传于山西省的传统民间的智力玩具,由九个圆环相连成串,以解开为胜。
九连环的九个环,一环扣一环地套在钗上。除了第 1 号环可以随时装上或卸下以外,其它环装上或卸下的条件是:在它的前面仅有紧靠它那一个环在钗上。即:当第 1 ~ i−2 号环都不在钗上,第 i−1 号环在钗上,这时可以装上或卸下第 i 号环。
输入格式
环数 操作(U表示装上, D表示卸下)
输出格式
装上或卸下九连环的操作步骤
每行显示一步操作,具体格式为:
环号: U或D (U表示装上,D表示卸下)
输入样例1
3 U
输出样例1
1: U
2: U
1: D
3: U
1: U
输入样例2
4 D
输出样例2
2: D
1: D
4: D
1: U
2: U
1: D
3: D
1: U
2: D
1: D
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
void fun(int n,char op)
{
if(op=='U')
{
if(n==1)
{
printf("1: U\n");
return ;
}
else if(n==2)
{
printf("1: U\n2: U\n");
return ;
}
else
{
fun(n-1,'U');
fun(n-2,'D');
printf("%d: U\n",n);
fun(n-2,'U');
}
}
else if(op=='D')
{
if(n==1)
{
printf("1: D\n");
return ;
}
else if(n==2)
{
printf("2: D\n");
printf("1: D\n");
return ;
}
else
{
fun(n-2,'D');
printf("%d: D\n",n);
fun(n-2,'U');
fun(n-1,'D');
}
}
}
int main()
{
int n;
char a;
scanf("%d %c",&n,&a);
fun(n,a);
return 0;
}