当前位置: 首页 > news >正文

每天一题:洛谷P2041分裂游戏

题目描述

有一个无限大的棋盘,棋盘左下角有一个大小为 n 的阶梯形区域,其中最左下角的那个格子里有一枚棋子。你每次可以把一枚棋子“分裂”成两枚棋子,分别放在原位置的上边一格和右边一格。(但如果目标位置已有棋子,则不能这样做)你的目的是通过有限次的操作,让整个阶梯里不再有任何棋子。下图所示的是 n=2 时的一种解法。

图片来源于洛谷

我们用从下往上数的方式标记行,从左往右数的方式标记列,以 (行,列) 来标记棋子,并且都从 1 开始。

例如,第三步中的三个棋子坐标分别为 (3,1),(2,2),(1,2)。

现在已知 n,你需要做的是给出合适的操作序列。

输入格式

输入一个正整数 n。

输出格式

如果有解,第一行应包含一个正整数 m,表示总共需要的操作步数。

以下 m 行,每行包括两个正整数 xi,yi,表示第 iii 步操作分裂的是处于第 xi​ 行第 yi 列的棋子。

如果无解,只需在第一行输出 −1。

输入输出样例

输入 #1

1

输出 #1

1
1 1

输入 #2

2

输出 #2

4
1 1
2 1
2 2
1 2

说明/提示

  • 对于 40% 的数据:n≤8;
  • 对于 100% 的数据:n≤1000。

解题方法

我刚开始看见标签时就猜到这是一道找规律题(标签为数学)(长这样的题除了找规律以外没别的可能),所以就直接手动模拟了第n为3时的情况,结果发现怎么都分不出来,总有一些棋子挡住了分裂,各个棋子互相牵制,怎么也分不下去了(QWQ手动尝试了半天),既然n为3都分不下去,那n更大自然也分不下去辣。

代码

是人都打的出这段代码八~

还是提供代码比就好hhh

#include<bits/stdc++.h>
using namespace std;int main(){int n;cin>>n;if(n==1){cout<<1<<endl<<1<<" "<<1;}else if(n==2){cout<<4<<endl<<1<<" "<<1<<endl<<2<<" "<<1<<endl<<2<<" "<<2<<endl<<1<<" "<<2;}else{cout<<"-1";}return 0;
}

哎嗨结束咯

http://www.lryc.cn/news/470172.html

相关文章:

  • 简单的 curl HTTP的POSTGET请求以及ip port连通性测试
  • ubuntu下快捷键启动程序
  • Yii2 init 初始化脚本分析
  • 深入理解gPTP时间同步过程
  • 基于阿里云服务的移动应用日志管理方案—日志的上传、下载、存档等
  • Python浪漫之画星星
  • Android使用协程实现自定义Toast弹框
  • git diff命令详解
  • Vue 插槽:组件通信的“隐形通道”
  • react1816中的setState同步还是异步的深层分析
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第七篇-体积纹理绘制】
  • Linux的环境搭建
  • WPF+Mvvm案例实战(五)- 自定义雷达图实现
  • 网络爬虫-Python网络爬虫和C#网络爬虫
  • 如何有效解除TikTok账号间的IP关联
  • Python自省机制
  • wgan-gp 对连续变量 训练,6万条数据,训练结果不错,但是到局部的时候,拟合不好,是否可以对局部数据也进行计算呢
  • python 制作 发货单 (生成 html, pdf)
  • GeoWebCache1.26调用ArcGIS切片
  • 深度学习-卷积神经网络-基于VGG16模型, 实现猫狗二分类(文末附带数据集下载链接, 长期有效)
  • 计算Java集合占用的空间【详解】
  • 仕考网:关于中级经济师考试的介绍
  • SYN590RL 300MHz至450MHz ASK接收机芯片IC
  • 15分钟学 Go 第 20 天:Go的错误处理
  • C++——string的模拟实现(上)
  • JavaCV 之均值滤波:图像降噪与模糊的权衡之道
  • 桥接模式,外界与主机通,与虚拟机不通
  • 用HTML构建酷炫的文件上传下载界面
  • Gateway 统一网关
  • 7 种常见的前端攻击