1568俄罗斯方块

原创 2013年12月01日 20:15:30

题目描述

这个游戏大家太熟悉了,应该没有人没玩过吧,相当有创意的一个小游戏,成为了人们心中的经典。

玩这个游戏时,我们最关注的是下面已经垒起的部分,正在下降的图形,以及下一个要出现的图形,目标是想方设法将一行或几行填满,从而可以消掉,避免垒的太高而导致游戏结束。

今天我们想要处理的问题要简单一些:我们用数组表示下面已经垒起来的部分,1表示有小方块,0表示该位置是空的。问题是,我们所面临的可能是消掉之前的状态,就是说可能某些行已经满了,但是还没有消掉。我们需要做的是把那些满了的行消掉,同时让上面的行落下来(注意不是某个单独的小方块落下来,而是上面的整行会因为下面的行被消掉而下落),最终得到稳定后的状态(稳定的状态即不存在还能消掉的行的状态,见样例)。
 

 

 

 

输入

    输入的第一行是两个正整数rc (3 < r,c < 20),分别表示存放已经垒起小方块的矩阵的行数和列数。然后是r行数据,每行c01,中间没有空格.

输出

    根据题目要求输出消掉满行后得到的稳定状态,还是一个r*c0-1矩阵,若没有可以消的行则原样输出。

示例输入

6 6
000000
001100
111111
101010
111111
101011

示例输出

000000
000000
000000
001100
101010
101011

  1. #include<stdio.h>  
  2. struct sdut  
  3. {  
  4.     char s[22];  
  5. }hang[21];  
  6. int main()  
  7. {  
  8.     int m, n, i, j, x, a[21], b = 0;  
  9.     scanf("%d%d", &m, &n);  
  10.     for(i = 0; i <= m - 1; i++)  
  11.     {  
  12.         scanf("%s", &hang[i].s);  
  13.     }  
  14.     for(i = 0; i <= m - 1; i++)  
  15.     {  
  16.         x = 0;  
  17.         for(j = 0; j <= n - 1; j++)  
  18.         {  
  19.             if(hang[i].s[j] == '1')  
  20.                 x++;  
  21.         }  
  22.         if(x != n)  
  23.         {  
  24.             a[i] = 0;  
  25.         }  
  26.         else  
  27.         {  
  28.             a[i] = 1;  
  29.             b++;  
  30.         }  
  31.     }  
  32.     for(i = 0; i <= b - 1; i++)  
  33.     {  
  34.         for(j = 0; j <= n - 1; j++)  
  35.         {  
  36.             if(j == n - 1)  
  37.                 printf("0\n");  
  38.             else  
  39.                 printf("0");  
  40.         }  
  41.     }  
  42.     for(i = 0; i <= m - 1; i++)  
  43.     {  
  44.         if(a[i] == 0)  
  45.             puts(hang[i].s);  
  46.     }  
  47.     return 0;  
  48. }  

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

史上短小精悍的JavaScript编写的俄罗斯方块游戏

史上短小精悍的JavaScript编写的俄罗斯方块游戏 俄罗斯方块 <div id="box" style="width:252px;font:25px/25px 宋体;backgrou...

Android 俄罗斯方块开发(附源码)

最近在学Android开发,一直想找个项目来练练手,前段时间在考试也没有时间,不过那时候就有点想法,就是想做个俄罗斯方块或者贪吃蛇什么的。然后一直到这几天才有时间来写这个项目。 完成这个项目主要有几...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

命令行俄罗斯方块

运行在命令行下的俄罗斯方块

第七次CCF认证考试 题目二模拟俄罗斯方块下落的过程

第七次CCF认证考试 题目二模拟俄罗斯方块下落的过程

HTML5-俄罗斯方块

这个游戏主要分为三部份,HTML5+CSS+JAVASCRIPT来完成的。在这里详细讲一下js的代码。因为这个游戏的主要部分其实就是js。大多数都是靠js来完成的。 完成后的效果如下: H...

游戏人生Silverlight(1) - 七彩俄罗斯方块[Silverlight 2.0(c#)]

[源码下载] 游戏人生Silverlight(1) - 七彩俄罗斯方块[Silverlight 2.0(c#)] 作者:webabcd 介绍 使用 Silverligh...

用java写的俄罗斯方块小程序

这是java课最后做的课程设计,由于java是初学的,所以做的时候有参考一些技术大牛的博客,在此表示感谢。 发在这里跟大家交流学习一下。

俄罗斯方块游戏的菜单栏和工具栏的实现

俄罗斯方块游戏的菜单栏和工具栏的实现,主要帮助我 1,  掌握菜单和工具栏的实现机制; 2,  建立俄罗斯方块游戏菜单类; 3,  建立俄罗斯方块游戏工具栏类(选做); 4,  建立“退出游戏”菜单...

MFC双人版俄罗斯方块

MFC俄罗斯方块双人版实现

进一步完善实现俄罗斯方块的左移,右移,下移和旋转

进一步完善实现俄罗斯方块的左移,右移,下移和旋转 1,实现方块的旋转; 2,实现方块是否可以移动的判定; 3,实现方块是否可以旋转的判定; 4,随机生成方块; 涉及的类: 1,BlockListe...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)