2369159795dw @ 2024-02-27 14:02:48
#include<stdio.h>
int main()
{
int l,m,i,j,cot;
cot=0;
int u[m],v[m],b[++l];
scanf("%d %d",&l,&m);
for(i=0;i<=l;i++)
{
b[i]=0;
}
for(i=0;i<m;i++)
{
scanf("%d %d",&u[i],&v[i]);
for(j=0;j<=l;j++){
if(j>=u[i]&&j<=v[i])
{
b[j]=1;
}
}
}
for(i=0;i<=l;i++)
{
if(b[i]==0)
cot++;
}
printf("%d",cot);
}
by HMSVanguard @ 2024-02-27 14:13:42
int u[m],v[m],b[++l];
scanf("%d %d",&l,&m);
这里要改成
scanf("%d %d",&l,&m);
int u[m],v[m],b[l+1];
原程序中先定义b数组再输入的l,定义b[l]时的l根本不知道是什么值。b数组的大小就出错了。b[++l]这样的写法不对,++l会将l的值加一,加完以后在for循环中就会多循环一次导致答案错误。改成l+1后l的值就不会变了。(还是不太建议用变量来定义数组大小)
by 2369159795dw @ 2024-02-27 18:37:11
谢谢大佬