baibaidebai @ 2024-02-20 14:35:49
#include<stdio.h>
int road[10000];
int main()
{
int l,num;
scanf("%d %d\n",&l,&num);
for(int i=0;i<num;i++)
{
int num1=0,num2=0;
scanf("%d %d\n",&num1,&num2);
for(int j=num1;j<num2;j++)
road[j]=1;
}
int out=0;
for(int i=0;i<l;i++)
{
if(road[i]==0)
out++;
}
printf("%d",out);
return 0;
}
这个代码只能通过后面8个测试,前面的两个是WA。然后我尝试修改了第12行的代码为
for(int j=num1-1;j<num2;j++)
结果第一组答案正确,而后面的9个又错了。 求大佬解答
by yeqiwei @ 2024-02-20 14:44:06
#include <iostream>
int a[10000];
using namespace std;
int main()
{
int i,j,k,m,n,l,sum=0,q,z;
cin>>l>>m;
for(i=1;i<=m;i++)
{
cin>>q>>z;
for(j=q;j<=z;j++)
if(a[j]==0)
a[j]++;
}
for(i=0;i<=l;i++)
if(a[i]==0)
sum++;
cout<<sum;
}
这是我的代码,你先看着,我看看你程序哪里错了
@baibaidebai
by yeqiwei @ 2024-02-20 14:47:03
for(int j=num1;j<num2;j++)
road[j]=1;
把这两行改成
for(int j=num1;j<=num2;j++)
if(road[j]==0)
road[j]++;
by yeqiwei @ 2024-02-20 14:47:39
@baibaidebai
如果还有问题私聊
by yeqiwei @ 2024-02-20 15:21:11
还要把
for(int i=0;i<l;i++)
{
if(road[i]==0)
out++;
}
改成
for(int i=0;i<=l;i++)
{
if(road[i]==0)
out++;
}
by baibaidebai @ 2024-02-21 14:10:49
@yeqiwei 谢谢大佬,修改之后已经完全通过了