64,649
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main()
{
int n,i,j,k,l,m,sum,x[10][10],y[10][10],s[99][99];
cin>>n;
sum=0;
for (i=0;i<=n-1;i++)
{
cin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
} //8-11行:输入坐标
for (i=0;i<=n-1;i++)
{
for (j=y[i][1];j<=y[i][2]-1;j++)
{ for (k=x[i][1];k<=x[i][2]-1;k++)
s[j][k]=1; //13-19行:把扫过的方格记为1,没有扫过的方格记为0
}
}
for (i=0;i<=77;i++)
{
for (j=0;j<=99;j++)
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
cout<<sum;
}
for (i=0;i<=77;i++)
{
for (j=0;j<=99;j++)
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
#include <iostream>
using namespace std;
int main()
{
int n,i,j,k,sum;
static int x[99][99];
static int y[99][99];
static int s[99][99];
cin>>n;
sum=0;
for (i=0;i<=n-1;i++)
{
cin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
} //8-11行:输入坐标
for (i=0;i<=n-1;i++)
{
for (j=y[i][1];j<=y[i][2]-1;j++)
{ for (k=x[i][1];k<=x[i][2]-1;k++)
s[j][k]=1; //13-19行:把扫过的方格记为1,没有扫过的方格记为0
}
}
for (i=0;i<=99;i++) //这里注意 s 范围是 0-98 不是 0-99 改成 for( i=0;i<99;i++)
{
for (j=0;j<=99;j++) //同上
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
cout<<sum;
}
还是不对啊
比如输入
1
1 1 4 4
理论输出是 9才对 但是他输出的是14
算法理论上是没错的吧。。[/quote]
看红字
[/quote]
我知道了。。。错了一个很基本的问题#include <iostream>
using namespace std;
int main()
{
int n,i,j,k,sum;
static int x[99][99];
static int y[99][99];
static int s[99][99];
cin>>n;
sum=0;
for (i=0;i<=n-1;i++)
{
cin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
} //8-11行:输入坐标
for (i=0;i<=n-1;i++)
{
for (j=y[i][1];j<=y[i][2]-1;j++)
{ for (k=x[i][1];k<=x[i][2]-1;k++)
s[j][k]=1; //13-19行:把扫过的方格记为1,没有扫过的方格记为0
}
}
for (i=0;i<=99;i++) //这里注意 s 范围是 0-98 不是 0-99 改成 for( i=0;i<99;i++)
{
for (j=0;j<=99;j++) //同上
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
cout<<sum;
}
还是不对啊
比如输入
1
1 1 4 4
理论输出是 9才对 但是他输出的是14
算法理论上是没错的吧。。[/quote]
看红字
[/quote]
98怎么来的呀。。。。为什么99就不对呢#include <iostream>
using namespace std;
int main()
{
int n,i,j,k,sum;
static int x[99][99];
static int y[99][99];
static int s[99][99];
cin>>n;
sum=0;
for (i=0;i<=n-1;i++)
{
cin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
} //8-11行:输入坐标
for (i=0;i<=n-1;i++)
{
for (j=y[i][1];j<=y[i][2]-1;j++)
{ for (k=x[i][1];k<=x[i][2]-1;k++)
s[j][k]=1; //13-19行:把扫过的方格记为1,没有扫过的方格记为0
}
}
for (i=0;i<=99;i++) //这里注意 s 范围是 0-98 不是 0-99 改成 for( i=0;i<99;i++)
{
for (j=0;j<=99;j++) //同上
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
cout<<sum;
}
还是不对啊
比如输入
1
1 1 4 4
理论输出是 9才对 但是他输出的是14
算法理论上是没错的吧。。[/quote]
看红字
#include <iostream>
using namespace std;
int main()
{
int n,i,j,k,sum;
static int x[99][99];
static int y[99][99];
static int s[99][99];
cin>>n;
sum=0;
for (i=0;i<=n-1;i++)
{
cin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
} //8-11行:输入坐标
for (i=0;i<=n-1;i++)
{
for (j=y[i][1];j<=y[i][2]-1;j++)
{ for (k=x[i][1];k<=x[i][2]-1;k++)
s[j][k]=1; //13-19行:把扫过的方格记为1,没有扫过的方格记为0
}
}
for (i=0;i<=99;i++)
{
for (j=0;j<=99;j++)
if ((s[i][j])==1)sum++;
} //21-25行:把记为1的方格的面积进行累加,可以避免重复
cout<<sum;
}
还是不对啊
比如输入
1
1 1 4 4
理论输出是 9才对 但是他输出的是14
算法理论上是没错的吧。。 int n,i,j,k,l,m,sum,x[10][10],y[10][10],s[99][99];
//改为
int n,i,j,k,l,m,sum,x[10][10],y[10][10];
static int s[99][99];//在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。