TOJ 1926 POJ 1548 Robots 贪心 水题 C语言

思路是贪心,方法就是很水的方法。 


做法:
1.每次派一个机器人从(1,1)开始往右或往下,走到(24,24)为止。
2.如果当前格子有垃圾,就清除。
3.如果当前所在的格子右边有垃圾,就往右走。否则,往下走。
4.如果走到了最下边,就一直往右走;如果走到了最右边,就一直往下走。
5.一个机器人走完,检查还有没有垃圾。有就再派一个,没有就停止。

Right[i][j]是(i,j)右边的垃圾数;
Down[i][j]是(i,j)下边的垃圾数;
cnt记录总的垃圾数;
res记录机器人数。

Source Code

Problem: 1548   User: yueashuxia
Memory: 400K   Time: 0MS
Language: GCC   Result: Accepted

#include<stdio.h>

char grid[25][25];
int Right[25][25],Down[25][25];

int main(){
    int a, b, i, j, k, cnt = 0, res;
    while(scanf("%d%d", &a, &b), a != -1 || b != -1)
    {
         grid[a][b] = 1;
         cnt ++;
         for(i = 1; i < b; i ++)
         {
             Right[a][i]++;    
         }
         for(i = 1; i < a; i ++)
         {
             Down[i][b]++;    
         }
         if(a == 0 && b == 0)
         {
             cnt--;
             for(res = 0; cnt > 0; )
             {
                 res++;
                 i = j = 1;
                 while(i < 25 && j < 25)
                 {
                     if(grid[i][j] == 1)
                     {
                         grid[i][j] = 0;
                         cnt--;
                         for(k = 1; k < i; k ++) Down[k][j]--;
                         for(k = 1; k < j; k ++) Right[i][k]--;    
                     }   
                     if(cnt == 0) break;
                     if(Right[i][j] > 0)
                     {
                         if(j+1 > 24) i++;
                         else j++;  
                     }
                     else 
                     {
                         if(i+1 > 24) j++;
                         else i++;     
                     }
                 }
             }
             printf("%d\n", res); 
         }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值