| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1397 人关注过本帖
标题:[清理垃圾帖子]
取消只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏
已结贴  问题点数:88 回复次数:6 
[清理垃圾帖子]
若数组a中 横向或是 纵向有 >= 3 个 相同的数,则消去这些相同的数
 
样例输入:
int[][] a =
{
    { 1, 7, 3,  4,  5},  // {0, 1, 0, 0, 0}
    { 7, 7, 7,  7, 10},  // {1, 1, 1, 1, 0}
    {11, 7, 7, 14, 15},  // {0, 1, 1, 0, 0}
    {16, 7, 7, 19, 20}   // {0, 1, 1, 0, 0}
};
 
样例输出:
 
int[][] a =
{
    { -1, -1, -1,  -1,  5}, // {0, 1, 0, 0, 0}
    { 1, -1, -1,  4, 10},  // {1, 1, 1, 1, 0}
    {11, -1, -1, 14, 15},  // {0, 1, 1, 0, 0}
    {16, -1, 3, 19, 20}    // {0, 1, 1, 0, 0}
};

[ 本帖最后由 BlueGuy 于 2012-2-18 18:46 编辑 ]

[此贴子已经被作者于2015-10-23 14:46编辑过]

2012-02-18 13:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 2楼 beyondyf
这是个 俄罗斯方块 消行算法的变形。
消去一个数字,该数字上面的数字可以落下来,
+
要求连续
+
无数字用 -1 表示

[ 本帖最后由 BlueGuy 于 2012-2-18 14:11 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2012-02-18 14:09
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 4楼 czz5242199
我现在 快不会写代码了, 能不能直接写个代码给我

我就是真命天子,顺我者生,逆我者死!
2012-02-18 14:16
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 8楼 czz5242199
你的代码写的点乱,

我就是真命天子,顺我者生,逆我者死!
2012-02-18 17:50
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 11楼 czz5242199
// 消除地图上的方块
   public static int[][] removeTiles()
   {
       int[][] a =
          {
              {7, 7, 3,  4,  5}, // {0, 1, 0, 0, 0}
              {2, 7, 7,  7, 10}, // {0, 1, 1, 1, 0}
              {7, 7, 7, 14, 15}, // {1, 1, 1, 0, 0}
              {7, 7, 7, 7, 7}    // {1, 1, 1, 1, 1}
          };
      
       int[][] b = new int[MAP_HEIGHT][MAP_WIDTH];

       // 判断地图的橫向
       for (int i = 0; i < MAP_HEIGHT; i++)
       {
           for (int j = 0; j < MAP_WIDTH; )
           {
               int runLength = 0;
               int runValue = a[i][j];
               
               while ((j + runLength < MAP_WIDTH) && (a[i][j+runLength] == runValue))
               {
                   runLength++;
               }
               
               if (runLength >= 3)
               {
                   for (int k = 0; k < runLength; k++)
                   {
                       b[i][j+k] = 1;
                   }
               }
               
               j = j + runLength;
           }
       }
      
       // 判断地图的纵向
       for (int i = 0; i < MAP_WIDTH; i++)
       {
           for (int j = 0; j < MAP_HEIGHT; )
           {
               int runLength = 0;
               int runValue = a[j][i];
               
               while ((j + runLength < MAP_HEIGHT) && (a[j+runLength][i] == runValue))
               {
                   runLength++;
               }
               
               if (runLength >= 3)
               {
                   for (int k = 0; k < runLength; k++)
                   {
                       b[j+k][i] = 1;
                   }
               }
               
               j = j + runLength;
           }
       }
      
       // 消除方块
       for (int i = 0; i < MAP_HEIGHT; i++)
       {
           for (int j = 0; j < MAP_WIDTH; j++)
           {
               if (b[i][j] == 1)
               {
                   if (i == 0)
                   {
                       a[i][j] = -1;
                   }
                   else
                   {   
                       for (int k = i; k > 0; k--)
                       {
                           a[k][j] = a[k-1][j];
                       }
                       
                       a[0][j] = -1;
                   }
               }
           }
       }
      
       return a;
   }

[ 本帖最后由 BlueGuy 于 2012-2-18 18:45 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2012-02-18 18:00
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 9楼 beyondyf
能帮我改改最后那一段吗?

我就是真命天子,顺我者生,逆我者死!
2012-02-18 18:11
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 15楼 beyondyf
偶尔也客串一下 java

我就是真命天子,顺我者生,逆我者死!
2012-02-18 19:24
快速回复:[清理垃圾帖子]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017595 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved