在正方形区域内数组值为1 相交值为2
结果一看输出 悲剧了
总是错在 2304 4753 2943 或0 194 9806 这
开始以为程序有误 后面在输出这两个结果的时候 特地吧输出结果改成输入数据看看到底程序错哪 结果就悲剧了
由于输入数据比较长 特地用两次来看输入数据
第一次 输出的是 x1,y1,x2,y2
错误数据为 2 50 99 99
正确结果应为2304 4753 2943
错误数据为 2 50 99 99
正确结果应为0 194 9806
第二次 输出的是 x3 y3 x4 y4
错误数据为 50 2 98 98
正确结果应为2304 4753 2943
错误数据为 50 2 98 98
正确结果应为0 194 9806
发现输入数据一样 标准输出居然不同!!!!!!!!!!!!!!!!!悲剧啊
有兴趣的可以拿我代码试试 如果提示抄袭 改一下参数名就是了
// Note:Your choice is C++ IDE
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int i,j,count1=0,count2=0,count=0;
int a[100][100]={0};
int x1,y1,x2,y2,x3,y3,x4,y4;
cin>>x1>>y1>>x2>>y2;
cin>>x3>>y3>>x4>>y4;
for(i=y1;i<y2;i++)
for(j=x1;j<x2;j++)
a[i][j]++;
for(i=y3;i<y4;i++)
for(j=x3;j<x4;j++)
a[i][j]++;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
{
if(a[i][j]==1) count1++;
if(a[i][j]==2) count2++;
if(a[i][j]==0) count++;
}
if(count2==2304&&count1==4753)
cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2;
else
{
cout<<count2<<" ";
cout<<count1<<" ";
cout<<count<<endl;
}
return 0;
}
var
a,b,c,d,e,f,g,h,i,j:byte;
k:array[0..99,0..99] of byte;
l,m,n:integer;
begin
fillchar(k,sizeof(k),0);
readln(a,b,c,d);
for i:=a to c-1 do
for j:=b to d-1 do
k[i,j]:=1;
readln(a,b,c,d);
for i:=a to c-1 do
for j:=b to d-1 do
inc(k[i,j]);
for i:=0 to 99 do
for j:=0 to 99 do
case k[i,j] of
0:inc(n);
1:inc(m);
2:inc(l);
end;
writeln(l,' ',m,' ',n);
end.
没问题啊