1568 俄罗斯方块

原创 2013年12月01日 20:33:59

题目描述

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

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

今天我们想要处理的问题要简单一些:我们用数组表示下面已经垒起来的部分,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

提示


来源

tongjiantao

示例程序

 
#include <stdio.h>
#include <string.h>

int main()
{
    int a[100][100];
    int i = 0,c = 0;
    int *p;
    int h = 0,l = 0;
    int ih = 0,il = 0;

    //freopen ("1.txt","r",stdin);

    scanf ("%d %d",&h,&l);
    for (ih = 0;ih < h;ih++)
        for (il = 0;il < l;il++)
            scanf ("%1d",&a[ih][il]);

    for (ih = 0;ih < h;ih++)
    {
        i = 0;
        p = a[ih];

        while (*p != 0 && i < l)
        {
            p++;
            i++;
        }

        if (i >= l)
        {
           c++;
        }
    }

    while (c--)
    {
        for (il = 0;il < l;il++)
                printf ("0");
            printf ("\n");
    }


    for (ih = 0;ih < h;ih++)
    {
        i = 0;
        p = a[ih];

        while (*p != 0 && i < l)
        {
            p++;
            i++;
        }

        if (i < l)
        {
            for (il = 0;il < l;il++)
                printf ("%d",a[ih][il]);
            printf ("\n");
        }
    }

    return 0;
}


相关文章推荐

开始正题,现在是俄罗斯方块时间,这个是在打印字的基础上制作的!

首先,话不多说,发现视图很好做,难道是我自己的幻觉

51nod 俄罗斯方块(找规律(构造))

算法马拉松24   已注册   比赛已经结束 俄罗斯方块 NanoApe (命题人) 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 玩过俄...
  • update7
  • update7
  • 2017年05月06日 20:40
  • 50506

Java实现俄罗斯方块附源码

Java实现俄罗斯方块,稍后完善
  • codehxy
  • codehxy
  • 2014年05月11日 09:13
  • 11917

CCF 历年真题之俄罗斯方块(_1604_2_Tetris.java)参考答案

CCF 历年真题之俄罗斯方块(_1604_2_Tetris)参考答案 问题描述 试题编号: 201604-2 试题名称: 俄罗斯方块 时间限制: 1.0s 内存限制: 256....
  • Dina_p
  • Dina_p
  • 2017年07月10日 16:34
  • 362

使用Java实现小游戏:俄罗斯方块

使用Java实现小游戏:俄罗斯方块使用一个二维数组保存游戏的地图:// 游戏地图格子,每个格子保存一个方块,数组纪录方块的状态 private State map[][] = new State[ro...
  • zhliro
  • zhliro
  • 2015年05月15日 16:43
  • 2510

俄罗斯方块C语言——参考

#include #include #include #include #include #ifdef __cplusplus #define __CPPARGS ... #e...

cocos2d-x俄罗斯方块--基于简单工厂的程序重构

1 前言 前些天看了一个Cocos2D写的俄罗斯方块代码(下载网址为:http://www.okbase.net/file/item/27944),代码逻辑很清晰。 2 讨论 俄罗斯方块游戏逻辑...

【C语言】实现俄罗斯方块

学习了C语言,写一个俄罗斯方块,代码绝对可以运行 大神勿笑,只适合初学者 本人也是菜鸟1、考虑怎么存储俄罗斯方块俄罗斯方块的形状一共有19种类型,如果拿数组来表示的话,可能会比较会浪费空间(网...

俄罗斯方块代码——c++实现

用codeblock实现不了,缺少库函数,windows的kpi。555 现在还么解决办法,不过代码挺好的,贴吧大神多。 2017-5-2#include #include #include#de...

简单的俄罗斯方块代码(Java)

package MyGame; /** * Created by zu on 2015/3/30. */ /* 整个游戏界面分为两部分,左边显示信息,右边是游戏区,是两个JPanel,它们的父窗...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1568 俄罗斯方块
举报原因:
原因补充:

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