列表

详情


NC214592. 俄罗斯方块

描述

小z刚刚小学毕业,他准备以玩游戏度过这个短暂的假期,找了许多游戏,他发现俄罗斯方块最好玩,但由于 小z比较笨,只能玩简单版的俄罗斯方块。 简单的俄罗斯方块规则如下: 有一个横为 6,高为 7 的区域(如下图),各种类型的方块将从上部掉落。  只有三种类型的方块,分别是 Type1: Type2: Type3: 玩家可以做的操作有:旋转方块,以格子为单位左右移动方块。 方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处。 当区域中某一行横向格子全部由方块填满,则该行会消失。 当方块堆到区域之上,则游戏结束。 注意:所有方块都会在下降到局域内前进行旋转和平移,不能在区域内进行操作,也就是相当于旋转和平 移好的方块直接落进区域内。 游戏中会有 n 个方块掉落,当 n 个方块放置结束或者方块超出区域之上,则游戏结束。 由于 小z太笨了,需要你算出最多消除的行数。 你能帮助他吗?

输入描述

第一行包含一个整数 n,表示掉落的方块个数。
第二行有 n 个整数,每个整数 type 代表掉落的方块种类(种类按照游戏规则,即 type=1 代表一个 1*4 的方块)。

输出描述

一个数 ans,代表最多的消除行数。

示例1

输入:

3
1 1 2

输出:

2

示例2

输入:

5
1 1 2 2 2

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 4ms, 内存消耗: 388K, 提交时间: 2021-01-22 15:39:42

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,x,y;
	cin>>n>>x>>y;
	if(n<=4)
	cout<<2;
	else if(n<=6)
	cout<<3;
	else if(n<=7)
	cout<<4;
	else if(n<=8)
	cout<<5;
	else if(x==1&&y==1)
	cout<<5;
	else
	cout<<6;
	return 0;
}

上一题