博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“华为杯”山东理工大学第十一届ACM程序设计竞赛 E - 九连环
阅读量:5339 次
发布时间:2019-06-15

本文共 1011 字,大约阅读时间需要 3 分钟。

Problem Description

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

如果你不了解九连环,那玄黄就带你领略九连环的奥妙: 

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

Input

输入一个整数n ( 0<n<10 ),代表杆上面的连环个数。

Output

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

首先我们一定是想先把最后面的拿掉

1.每次拿掉第i个位置时要先看i-1的位置是否存在;

2.存在,需要把i-1之前的拿掉  此时i = i - 2

3.不存在 需要将i-1的位置变为存在 此时i = i - 1

#include
using namespace std;#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define ls now<<1#define rs now<<1|1#define lson l,mid,ls#define rson mid+1,r,rs#define inf 0x3f3f3f3fint arr[15];string a="DOWN",b="UP";void dfs(int n){ if(n<1) return ; for(int i=n;i>=1;i--) { if(arr[i-1]) dfs(i-2); if(arr[n-1]==0) dfs(i-1); } cout<
<<" "<<(arr[n]?a:b)<
>n; dfs(n); return 0;}

 

转载于:https://www.cnblogs.com/minun/p/10927371.html

你可能感兴趣的文章
oracle job
查看>>
Redis常用命令
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
界面交互之支付宝生活圈pk微信朋友圈
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>