试题编号: | 201409-2 |
试题名称: | 画图 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。 输入格式 输入的第一行包含一个整数n,表示要画的矩形的个数。 输出格式 输出一个整数,表示有多少个单位的面积被涂上颜色。 样例输入 2 样例输出 15 评测用例规模与约定 1<=n<=100,0<=横坐标、纵坐标<=100。 |
问题链接:CCF201409-2 画图
问题分析
注意:例如给出的一组数字为1 1 2 2,则被涂得格子只有1个,并不是4个
由于ccf给的内存限制比较大,所以我们完全可以开一个10210大小的数组用来存储数据(题目中给出x,y为0到100),初值为0
我们只需要将每次读入的横纵坐标依次扫描一遍,将相应的数组值置为1即可(这样不会存在重复的情况)
最后扫描一遍数组,看有多少个1就是最终答案
具体实现请看下面代码
满分代码
n=int(input())
coord=[]
#题目上约定了坐标纸的大小为0到100,所以首先建立一个101*101的数组
for i in range(101):
y=[]
for j in range(101):
y+=[0]
coord+=[y]
#读入数据:
for i in range(n):
#读入并将坐标转换为int
co=input().split()
for j in range(4):
co[j]=int(co[j])
#将左下角到右上角每组数字都置为1,代表这里有了颜色
for x in range(co[0],co[2]):
for y in range(co[1],co[3]):
coord[x][y]=1
count=0
#遍历这个101*101的数组,看有多少个1就是有多少个格子被涂了颜色
for i in range(101):
for j in range(101):
if coord[i][j]==1:
count+=1
print(count)