c语言,为什么令数组等于一的for循环必须和输入吗,n的for循环在一起

P1047 [NOIP2005 普及组] 校门外的树

123J @ 2022-09-02 00:11:08

#include<stdio.h>
int main(){
  int i,l,m,count=0,u,v,a[10001];
  scanf("%d %d",&l,&m);
  for(i=0;i<=l;i++){
    a[i] = 0;
  }
   for(i=0;i<m;i++){
    scanf("%d %d",&u,&v);
    for(int j=u;j<=v;j++){   //注意这个for循环必须写到输入的for循环里面,提出来就是错的
    a[j] = 1;
  }
  // for(i=0;i<m;i++){
  //   for(int j=u;j<v;j++){
  //     a[j] = 1;
  //   }
  }
  for(i=0;i<=l;i++){
    if(a[i]==0){
      count++;
    }
  }
  printf("%d",count);
  return 0;
}

by syksykCCC @ 2022-09-02 00:38:44

@123J 因为你提出来的话,u, v 一直都是最后输入的那一组,之前的被覆盖掉了


by 123J @ 2022-09-02 13:59:44

@syksykCCC明白了,谢谢


|