讨论 / 两组相同测试数据居然有两个不同答案 这评测系统。。服了!!!
kid2012 2011-09-21 19:48:00
点我顶贴 收藏 删除
我初始化100*100的数组 为0

在正方形区域内数组值为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;

}

#1 kid2012@2011-09-10 16:58:00
回复 删除
问题编号:639

#2 runapp@2011-09-21 19:48:00
回复 删除
我也是这么做的啊:

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.

没问题啊

查看更多回复
提交回复