九连环

九连环

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示。

 

如果你不了解九连环,那玄黄就带你领略九连环的奥妙: 
九连环是我国传统的民间智力玩具,玩具上面有九个连环套在杆上,目标就是通过一定的方式将九个连环从杆上全部取下来。 
玩法是这样的: 
1、对每个环,有2种操作:把这个环放到杆上或把这个环从杆上取下 
2、你可以随意的对第1个环进行操作 
3、如果你想对第i个环(i>1)进行操作,你必须将第i-1个环放在杆上,且必须把前i-2个环从杆上取下

 

Input

输入一个整数n ( 0

Output

输出把所有连环取下来的最少操作步骤,每一步占一行,输出一个整数i和操作”UP”或者”DOWN”,代表将第i个环放到杆上或从杆上取下来,整数和操作用空格分开。详情见示例输出。

Sample Input

4

Sample Output

2 DOWN
1 DOWN
4 DOWN
1 UP
2 UP
1 DOWN
3 DOWN
1 UP
2 DOWN
1 DOWN
//9 连环问题
 
#include<stdio.h>
#include<stdlib.h>
 
void down(int n) ;
void up(int n) ;
 
void down(int n )
{   if(n>2)
    down(n-2) ;//要把第n个环都拿掉,首先要把前n-2个环拿掉(开始都在棒上,所以第n-1个环肯定在棒上)
    printf("%d DOWN\n",n) ;
    if(n>2)
    up(n-2) ;//为了第n-1个环可以从棒上拿下要保证n-2个环在棒上
    if(n>1)
    down(n-1) ;//开始对滴n-1个环进行操作
}
 
void up(int n)//往上面拿环同上分析
{
    if(n>1)
    up(n-1) ;
    if(n>2)
    down(n-2) ;
    printf("%d UP\n",n) ;
    if(n>2)
    up(n-2) ;
 
}
 
int main()
{
    int   n  ;
    scanf("%d",&n) ;
    down(n) ;//把n环全部都拿掉
    return 0 ;
}
 
 
/***************************************************
****************************************************/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
buuctf(BUU CTF)是北京邮电大学举办的一项网络安全竞赛活动。九连环是其中的一道题目。 九连环是一个由九个环组成的智力游戏,目标是通过一系列的操作,将环从上到下按照一定的规则进行排列。这道题目可能要求我们编写一个程序来解决九连环的排列问题。 我们可以采用深度优先搜索(DFS)算法来解决该问题,该算法可以遍历所有可能的排列情况,并找到符合要求的解。具体步骤如下: 1. 定义一个长度为9的数组,用来表示九连环的初始排列。 2. 编写一个递归函数,该函数的目标是通过一系列的操作将九连环按照规则进行排列,同时记录每一个操作的过程。 3. 在递归函数中,使用循环遍历可能的操作情况,并以此对九连环进行操作。 4. 当九连环排列符合规则时,返回当前的排列和操作过程。 5. 当九连环没有符合规则的操作时,返回失败。 在解决该问题时,我们需要考虑以下几点: - 确定九连环的初始状态和目标状态。 - 设计合适的数据结构来存储操作过程和状态信息。 - 对递归函数进行合理的剪枝,以减少不必要的递归调用。 通过以上的思路和步骤,我们可以编写一个程序来解决九连环的排列问题。在BUU CTF中,我们可以使用该程序来解答九连环的题目,并提交给评测系统进行评判。最终得到正确的排列和操作过程,即可获得相应的分数和排名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZ --瑞 hopeACMer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值