sy514 @ 2024-08-05 09:41:10
#include<iostream>
using namespace std;
int a[1010][1010];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
for(int j=x1;j<=x2;j++)
for(int k=y1;k<=y2;k++)
a[j][k]++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
printf("%d",a[i][j]);
if(j==n)
printf("\n");
}
return 0;
}
by FFFuuuFFFuuu @ 2024-08-05 09:49:38
要修正代码,需要注意以下几点:
以下是修正后的代码:
#include<iostream>
using namespace std;
int a[1010][1010];
int main() {
int n, m;
cin >> n >> m;
// 初始化覆盖计数数组为0
for(int i = 0; i <= n; ++i)
for(int j = 0; j <= n; ++j)
a[i][j] = 0;
// 处理每个地毯
for(int i = 0; i < m; i++) {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
for(int j = x1; j <= x2; j++) {
for(int k = y1; k <= y2; k++) {
a[j][k]++;
}
}
}
// 输出结果
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cout << a[i][j];
if (j < n)
cout << " ";
}
cout << endl;
}
return 0;
}
a
初始化为0,确保所有位置开始时没有地毯覆盖。1
开始,因此输入的坐标可以直接用于索引操作,不需要额外调整。a
的大小为1010 x 1010
,这样可以保证在最大限制n, m <= 1000
的情况下不越界。by sshhgggddsbf @ 2024-08-23 13:04:45
你的每一个字符的输出后面没有空格
这样:
#include<iostream>
using namespace std;
int a[1010][1010];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
for(int j=x1;j<=x2;j++)
for(int k=y1;k<=y2;k++)
a[j][k]++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
printf("%d ",a[i][j]);//加空格
if(j==n)
printf("\n");
}
return 0;
}