zhaoanqiEtayo @ 2023-08-08 17:31:20
#include<stdio.h>
#include<stdlib.h>
int main()
{
int l,m,i,j,p,q;//长度l,数目m;
scanf("%d %d\n",&l,&m);
int a[m][2],b[l+1];
for(i=0;i<m;i++)
{
for(j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(p=0;p<=l;p++)
{
b[p]=0;
}
for(q=0;q<m;q++)
{
for(i=0;i<=l;i++)
{
while(a[q][0]<=i<=a[q][1])
{
b[i]=1;
}
}
}
int c=0;
for(i=0;i<=l;i++)
{
if(b[i]==0)
{
c++;
}
}
printf("%d",c);
return 0;
}
by wang1h @ 2023-08-08 17:45:10
不是a[q][0]<=i<=a[q][1]
是a[q][0]<=i&&i<=a[q][1]
while
没写i++
by wunaidedanjuan @ 2023-08-08 17:46:32
@zhaoanqiEtayo 中间两层 for 套一层 while 的循环可以缩成两层 for 循环
for(q=0;q<m;q++)
{
for(i=a[q][0];i<=a[q][1];i++)
{
b[i]=1;
}
}
by wang1h @ 2023-08-08 17:48:49
#include<stdio.h>
#include<stdlib.h>
int main()
{
int l,m,i,j,p,q;
scanf("%d %d\n",&l,&m);
int a[m][2],b[l+1];
for(i=0;i<m;i++)
{
for(j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(p=0;p<=l;p++)
{
b[p]=0;
}
for(q=0;q<m;q++)
{
for(;a[q][0]<=a[q][1];a[q][0]++)
{
b[a[q][0]]=1;
}
}
int c=0;
for(i=0;i<=l;i++)
{
if(b[i]==0)
{
c++;
}
}
printf("%d",c);
return 0;
}
by wang1h @ 2023-08-08 17:49:33
楼上正解
@zhaoanqiEtayo
by zhaoanqiEtayo @ 2023-08-08 17:54:46
#include<stdio.h>
#include<stdlib.h>
int main()
{
int l,m,i,j,p,q;//长度l,数目m
scanf("%d %d\n",&l,&m);
int a[100][2],b[l+1];
for(i=0;i<m;i++)
{
for(j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(p=0;p<=l;p++)
{
b[p]=0;
}
for(q=0;q<m;q++)
{
for(i=a[q][0];i<=a[q][1];i++)
{
b[i]=1;
}
}
int c=0;
for(i=0;i<=l;i++)
{
if(b[i]==0)
{
c++;
}
}
printf("%d",c);
return 0;
}
@wang1h 这样可以吗?