[PTA]7-4 九连环问题

[PTA]7-4 九连环问题

九连环是一种流传于山西省的传统民间的智力玩具,由九个圆环相连成串,以解开为胜。
在这里插入图片描述
九连环的九个环,一环扣一环地套在钗上。除了第 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

代码

#include<stdio.h>

void down(int n);
void on(int n){
	if(n>1) on(n-1);		
	if(n>2) down(n-2);		 
	printf("%d: U\n",n);		
	if(n>2) on(n-2);		 
}

void down(int n){
	if(n>2) down(n-2);		
	printf("%d: D\n",n);		
	if(n>2) on(n-2);		
	if(n>1) down(n-1);		
}

int main(){
	char a[2];
    scanf("%c %c",&a[0],&a[1]);
	//cin>>a[0]>>a[1];
	int n=a[0]-'0';
	if(a[1]=='U') on(n);
	else down(n);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值