机器人犁田 c++

题目描述 

FJ 为了让自己从无穷无尽的犁田工作中解放出来,于是买了个新机器人帮助他犁田。这个犁田机器人一次只能犁一个边长为整数的长方形的田地。

田地本身是一个边长为整数的长方形,且会被均等分割为多个 1×1 的小方格。这些方格的边和田地的长或宽平行。田地自上而下有 n 排方格,自左向右有 m列方格。

FJ 的 k 个指令用 4 个整数:x1,y1,x2,y2 表示,其中 (x1,y1) 是要犁田的长方形的左上角坐标,表示自上而下第 x1 行,自左向右第 y1列,同理,(x2,y2)是要犁田的长方形的右下角坐标。机器人会对所有的横坐标在 x1∼x2 之间,且纵坐标在 y1∼y2

需要注意的是,这个长方形可能会比你想象的多一行一列,因为从第 x1​ 排到第 x2 排一共有 x2−x1+1 排,而不是 x2−x1 排)。

FJ 想知道,机器人执行了所有 k 条指令后,最后有多少个方格的地被犁过。

输入描述 

第 11 行 33 个整数 n,m,k

第 i+1 (i=1∼k) 行,每行 4 个整数 x1,y1,x2,y2​,描述第 i 次犁田指令。

输出描述 

一个整数,代表被犁过的格子数。

样例1 

输入 

6 4 2
1 1 2 4
1 3 5 4

输出 

14

提示 

样例中,田地从上往下高度为 6,从左向右宽度为 4。FJ 下的 2 次命令如下图所示,田地分别被犁成红色和绿色。注意:被犁过的地看起来都是一样的,标出颜色只是为了更清晰地看出最近一次被犁的长方形区域。

pic_01.png

可见,一共 14 个方格的地被犁过。

1≤n,m≤240,1≤k≤200

对所有操作,保证 1≤x1≤x2≤n,1≤y1≤y2≤m

参考答案:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[250][250];

int main(){
	int n,m,k;
	cin>>n>>m>>k;
    for(int x=1;x<=k;x++){
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        for(int i=x1;i<=x2;i++){
            for(int j=y1;j<=y2;j++){
                a[i][j] = 1;
            }
        }
    }
    int cnt =0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]==1){cnt++;}
        }
    }
    cout<<cnt;
	return 0;
}

谢谢观看~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值