P1745 礼品配对包装
时间:2019-11-05
本文章向大家介绍P1745 礼品配对包装,主要包括P1745 礼品配对包装使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目背景
《爱与愁的故事第三弹·shopping》第二章。
题目描述
爱与愁大神在这家目标店买了2x份礼物,打算分给班级同学。其中有x份黑礼品,x份白礼品,2x+2个空礼盒。一开始这2x份礼品排成一行放在左边2x个空礼盒上,黑礼品在左边,白礼品在右边,最右边有两个空礼盒。现在爱与愁大神要把这2x个礼品移成黑白相间的一排。他正无聊着,于是定了个规矩:每次必须同时移动相邻的两个礼品,颜色不限,可以左移也可以右移到空礼盒上去,但不能调换两个礼品的左右位置。每次移动必须跳过若干个礼盒(不能平移),最后弄成黑白相间的一行礼品。这个规矩却难倒了自己,你能帮爱与愁大神出出主意吗?
输入格式
只有1行:x
输出格式
若干行:
第i行为步骤i-2(1代表黑礼品,2代表白礼品,0代表空礼盒)。注意step 0不计入总数。
最后1行为总数。
输入输出样例
输入 #1
7
输出 #1
Step 0:1111111222222200 Step 1:1111110022222212 Step 2:1111112222220012 Step 3:1111100222221212 Step 4:1111122222001212 Step 5:1111002222121212 Step 6:1111222200121212 Step 7:1110022212121212 Step 8:1112122002121212 Step 9:1002122112121212 Step 10:1212120012121212 Step 11:0012121212121212 11
说明/提示
40%数据:x<=10
100%数据:x<=70
思路
动手模拟 比如当n=4的时候应该怎么去移动
n=5时有些地方和 n=4一样 n=6时有些地方和 n=5 一样 n=7时有些地方和 n=6 一样 。。。。。。
我们就可以把n的问题分解成n-1的问题
代码
#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N=150; char c[N]; int n,st,sp; void print() { printf("Step %d:",st); for(int i=1; i<=2*n+2; i++) printf("%c",c[i]); printf("\n"); st++; } void move(int k) { for(int j=0; j<=1; j++) { c[sp+j]=c[k+j]; c[k+j]='0'; } sp=k; print(); } void mv(int n) { if(n==4) { move(4),move(8); move(2),move(7),move(1); } else { move(n); move(2*n-1),mv(n-1); } } int main () { scanf("%d",&n); st=0,sp=2*n+1; for(int i=1; i<=n; i++) c[i]='1'; for(int i=n+1; i<=2*n; i++) c[i]='2'; c[2*n+1]='0',c[2*n+2]='0'; print(); mv(n); printf("%d\n",st-1); return 0; }
原文地址:https://www.cnblogs.com/mysh/p/11801810.html
- Python量子力学计算模拟以及数据可视化
- (26) 剖析包装类 (上) / 计算机程序的思维逻辑
- (25) 异常 (下) / 计算机程序的思维逻辑
- (24) 异常 (上) / 计算机程序的思维逻辑
- Python3.6新特性官方文档中文版
- (23) 枚举的本质 / 计算机程序的思维逻辑
- (22) 代码的组织机制 / 计算机程序的思维逻辑
- Python开发微信公众号后台(系列二)
- (21) 内部类的本质 / 计算机程序的思维逻辑
- (20) 为什么要有抽象类? / 计算机程序的思维逻辑
- Python云计算框架:Openstack源码分析之RabbitMQ(一)
- (38) 剖析ArrayList / 计算机程序的思维逻辑
- 破解验证,让爬取更随心所欲!
- Visual Studio Code v0.9.1 发布
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发实现模仿360二维码扫描功能实例详解
- Android中控制和禁止ScrollView自动滑动到底部的方法
- ImageView 实现Android colorPikcer 选择器的示例代码
- Android Notification.Builder通知案例分享
- SimpleCommand实现上传文件或视频功能(四)
- SimpleCommand框架ImageLoader API详解(三)
- Android PopupMenu弹出菜单的实现
- SimpleCommand实现图片下载(二)
- Android中menu使用详解
- SimpleCommand框架介绍以及简单使用(一)
- Android开发中使用achartengine绘制各种图表的方法
- Android开发中Listview动态加载数据的方法示例
- Android自定义实现顶部粘性下拉刷新效果
- Android开发使用自定义view实现ListView下拉的视差特效功能
- Android打造炫酷进度条效果