首页 > 其他分享 >[PTA]7-4 九连环问题

[PTA]7-4 九连环问题

时间:2024-09-22 14:54:46浏览次数:11  
标签:down 卸下 int void 样例 PTA 问题 九连环

[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;
}

标签:down,卸下,int,void,样例,PTA,问题,九连环
From: https://blog.csdn.net/2201_75443644/article/details/142388662

相关文章

  • 【蓝桥杯】2024.9.22算法赛——灵魂问题\全栈项目小组(C++)
    一、灵魂问题题目灵魂问题题目分析1.要求输出一个整数2.题目在玩脑筋急转弯,关键句子标出来了——糖什么的根本不重要。所以咖啡不加糖,答案是0!!!代码#include<iostream>usingnamespacestd;intmain(){ cout<<0; return0;}二、全栈项目小组题目全栈项目小组......
  • Python中的同一运算符与整数缓存问题
    在Python中,is运算符与==运算符的使用常常引发混淆。特别是在处理小整数时,Python会进行整数缓存,以提高性能。本文将深入探讨同一运算符(is)与相等运算符(==)的区别,并详细阐述整数缓存的问题,通过具体的代码示例和运行结果来帮助理解。1.同一运算符与相等运算符is运算符:判断两个对象是否......
  • 【编程底层原理】彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的(一级缓存为
    一、整体推导思路为了彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的,要么去找三级缓存的设计者了解其设计的初衷,要么利用反推法来进行倒推(即一级缓存为啥不行,二级缓存为啥也不合适)。为了让大家能有一个更清晰的理解脉路,下面将先从反推法来介绍下一级缓存为啥不......
  • 关于`django-auth-ldap` 和 `ldap3`如何处理与 LDAP 服务器的连接和身份验证的问题
    在使用Django进行ActiveDirectory(AD)身份验证时,django-auth-ldap和ldap3都涉及到与LDAP服务器的交互。一个关键的差异在于如何处理与LDAP服务器的连接和身份验证。具体来说,django-auth-ldap通常使用一个绑定用户(BindDN)来执行搜索和验证操作,而使用ldap3时,你......
  • 【编程基础知识】哪些行为算跨域,跨域会引发什么问题,怎么解决
    哪些行为算跨域(CORS,Cross-OriginResourceSharing)跨域是指浏览器在处理网页时,由于同源策略(Same-OriginPolicy)的限制,限制了来自与当前请求网页不同源的资源请求。这里的“源”(Origin)指的是协议、域名和端口的组合。以下是一些常见的跨域行为:不同域名的请求:从http://exa......
  • 01背包问题之背包容量为什么要倒序遍历?(以C++代码具体实现为例)
    首先是先阐述一下背包问题:有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用依次,求解将哪些物品装入背包里物品价值总和最大。这里不解释代码的其他部分,只对代码中的背包容量遍历进行具体的解释,首先给出遍历部分的代......
  • Android-kotlin相关构建下载慢的问题处理建议
    我们在导入其他的android项目获取需要手动改变android的依赖版本比如gradle版本,kotlin版本等等,点击同步构建时会发现需要很长的时间,有时还会失去连接,这是因为我们在国内的网络访问外网又没有梯子的情况下导致的下载是解决这种情况的一些建议1.使用梯子(有更好,没有看下一步)2.使用......
  • C语言-文件操作-一些我想到的、见到的奇怪的问题
    博客主页:【夜泉_ly】本文专栏:【C语言】欢迎点赞......
  • 动态规划——问题的特征与求解步骤精解
    动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子阶段,按顺序求解子阶段。与分治不同的是,在动态规划过程中,前一子问题的解,为后一子问题的求解提供了有用的信息,也就是......
  • Docker常见问题汇总
    Docker端口映射不能访问现象:在公司内网虚拟机上使用Docker部署的禅道服务,之前访问一直都好好的,突然在某天的某个时间点就无法正常访问了,在主机上查看端口映射都是正常的(而且端口也同样被占用了),通过telnet命令也确实无法访问通。原因排查:Linux未开启内核转发功能,如下:#0代表内......