淮南企业网站建设,旅游网站建设调研,镇江大港,百度地图网站后台更新俄罗斯方块
题目大意#xff1a;
在俄罗斯方块中#xff0c;放一块方块进一个图中#xff0c;问刚好和上的可能性有多少种
原题#xff1a;
题目描述
相信大家都玩过“俄罗斯方块”游戏吧#xff0c;“俄罗斯方块”是一个有趣的电脑小游戏#xff0c;现有一个有C列、…俄罗斯方块
题目大意
在俄罗斯方块中放一块方块进一个图中问刚好和上的可能性有多少种
原题
题目描述
相信大家都玩过“俄罗斯方块”游戏吧“俄罗斯方块”是一个有趣的电脑小游戏现有一个有C列、行不受限定游戏平台每一次下落的方块是下列的7个图形的一种
在下落的过程中游戏者可以作90、 180或270 度旋转还可以左右移动对于每一次方块落地我们要求方块的每一部分都必须与地面最底面或己落下的方块上表面接触例如有一个宽度为6列的平台每一列的初始高度已经占用的方格数分别为2, 1, 1, 1, 0 和 1。编号为5的方块下落有且仅有5种不同的落地方法 现给出每一列的初始高度和下落方块的形状请你编写一个程序求出落地的方法总数也就是落地后地表面形成的不同的形状总数。
输入
第一行为二个整数C和P1 ≤ C ≤ 100, 1 ≤ P ≤ 7表示列数和下落方块的编号 第二行共有用一个空隔隔开的C个整数每一个数字在 0 到 100,之间包含0和100表示每一列的初始高度
输出
输出为一个整数表示落地的方法总数
输入样例#1
6 5
2 1 1 1 0 1输入样例#2
5 1
0 0 0 0 0输入样例#3
9 4
4 3 5 4 6 5 7 6 6输出样例#1
5输出样例#1
7输出样例#1
1解题思路
先打一波表先手残党然后模拟每一个位置看是否合得上
代码
#includecstdio
using namespace std;
int n,c,p,sum,ans,b[105],a[10][10][10];
int main()
{a[1][0][0]2;//两种方向a[1][1][0]1,a[1][1][1]0;//每个格子的高度a[1][2][0]4,a[1][2][1]0,a[1][2][2]0,a[1][2][3]0,a[1][2][4]0;a[2][0][0]1;a[2][1][0]2,a[2][1][1]0,a[2][1][2]0;a[3][0][0]2;a[3][1][0]3,a[3][1][1]1,a[3][1][2]1,a[3][1][3]0;//1是要往下1格到时直接相加看是否相同就知道是否符合了a[3][2][0]2,a[3][2][1]0,a[3][2][2]1;a[4][0][0]2;a[4][1][0]3,a[4][1][1]0,a[4][1][2]1,a[4][1][3]1;a[4][2][0]2,a[4][2][1]1,a[4][2][2]0;a[5][0][0]4;a[5][1][0]3,a[5][1][1]0,a[5][1][2]0,a[5][1][3]0;a[5][2][0]2,a[5][2][1]1,a[5][2][2]0;a[5][3][0]3,a[5][3][1]0,a[5][3][2]1,a[5][3][3]0;a[5][4][0]2,a[5][4][1]0,a[5][4][2]1;a[6][0][0]4;a[6][1][0]3,a[6][1][1]0,a[6][1][2]0,a[6][1][3]0;a[6][2][0]2,a[6][2][1]0,a[6][2][2]0;a[6][3][0]3,a[6][3][1]1,a[6][3][2]0,a[6][3][3]0;a[6][4][0]2,a[6][4][1]0,a[6][4][2]2;a[7][0][0]4;a[7][1][0]3,a[7][1][1]0,a[7][1][2]0,a[7][1][3]0;a[7][2][0]2,a[7][2][1]0,a[7][2][2]0;a[7][3][0]3,a[7][3][1]0,a[7][3][2]0,a[7][3][3]1;a[7][4][0]2,a[7][4][1]2,a[7][4][2]0;scanf(%d %d,n,c);for (int i1;in;i)scanf(%d,b[i]);for (int i1;ia[c][0][0];i)//模拟每一种形态for (int j1;jn-a[c][i][0]1;j)//每一个位置{suma[c][i][1]b[j];//初值p1;for (int k2;ka[c][i][0];k)if (a[c][i][k]b[jk-1]!sum) p0;//判断是否相同if (p) ans;}printf(%d,ans);
}