#include <iostream>
#include <stdio.h>
using namespace std;
bool a[241][241];
int main() {
int x,y,k,i,m,n,mm,nn,ans=0;
cin>>x>>y>>k;
while(k--) {
cin>>m>>n>>mm>>nn;
for(;m<=mm;m++)
for(;n<=nn;n++)
if(!a[m][n]) {
a[m][n]=1;
ans++;
}
}
return !printf("%d",ans);
}
在oj平台上做题 题目是在一个坐标系上的一个x y长宽左下角为原点的长方形内 覆盖k个长方形纸板
每个纸板都给出左上角和右下角坐标 最后计算x y内有多少上面覆盖着的点 为什么我上面写的这个程序不管用啊
例如输进去6 4 2 1 1 2 4 1 3 5 4 应该是14打出来却是4
在代码设计上有问题,没有考虑,当程序n满足最大值时,无论m到没到设定的最大值mm,程序中的ans都不会做++操作 同样 当m到达最大值时,无论n到没到设定的最大值nn,程序中的ans都不会做++操作,例如:按照你的输入,以(1,1)开始,在(2,4)内查找,当m=2时,n刚增加到3,还没有到最大值4,所以,导致程序出现问题。当然,修改之后,可能还会有问题,那应该是设计的问题,有卡片覆盖的问题,导致第二块板上的点,被覆盖。
纯手打的,不容易,望采纳!谢谢
附上代码:
include <iostream>
using namespace std;
bool a100;
void init()
{
}
int main()
{
return !printf("%d",ans);
}