Ewuyou @ 2023-09-26 11:06:34
int main()
{
int q,d;
d=0;
int m,n;
int a[10000];
int b[10000];
int c[10000];
scanf("%d %d",&m,&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d",&b[i],&c[i]);
}
for(int i=1;i<=m;i++)
{
a[i]=0;
}
for(int i=1;i<=n;i++)
{
q=0;
while(q<=c[i])
{
q=b[i];
a[i]=1;
q++;
}
}
for(int j=1;j<=m;j++)
{
if(a[j]==1)
{
d++;
}
}
printf("%d",d);
return 0;
}```
by zzyxl_qaq @ 2023-09-26 11:36:15
while(q<=c[i])
{
q=b[i];
a[i]=1;
q++;
}
这里每次循环开始都会 q=b[i]
,所以你 q
的值只会是 b[i]
或 b[i]+1
,这里自然就死循环了
by Crab_Tang @ 2023-09-26 11:36:33
@Ewoyou 头文件大哥
by Crab_Tang @ 2023-09-26 11:37:06
@Ewuyou 没有stdio头文件怎么输出啊
by Tjaweiof @ 2023-09-26 11:48:07
@Robots75 不知道就别乱说,他只放了主函数
by Crab_Tang @ 2023-09-26 11:55:49
《红题需要红名大佬来解》 @Tjaweiof
by 浅入深出 @ 2023-09-26 11:56:59
问题蛮多的,改了半天才改好
#include<bits/stdc++.h>
using namespace std;
int q,d;
int m,n;
int a[10000];
int b[10000];
int c[10000];
// 改了半天,发现只有开成全局才能过
int main(){
scanf("%d %d",&m,&n);
for(int i=1;i<=n;i++){
scanf("%d %d",&b[i],&c[i]);
}
/*
for(int i=0;i<=m;i++) // 从 0 开始
{
a[i]=0;
}
*/
for(int i=1;i<=n;i++){
/*
q=0;
while(q<=c[i]){
q=b[i];
a[i]=1;
q++;
}
*/ // 这里无意义 会死循环
for(int j=b[i]; j<=c[i]; j++){
a[j]=1;
}
}
for(int j=0;j<=m;j++){ // 从 0 开始
if(a[j]==0){ // 这里应该是统计 0 的个数(未挖走的)
d++;
}
}
cout<<d<<endl;
return 0;
}
by Tjaweiof @ 2023-09-26 12:00:58
@Robots75 No,I'm not a dalao.I'm a juruo!!!
by Tjaweiof @ 2023-09-26 12:02:14
@Robots75 虽然只是红题,想当年,我也是提交了四次才过的。
by Tjaweiof @ 2023-09-26 12:03:36
@浅入深出 这样在
by Tjaweiof @ 2023-09-26 12:04:04
@浅入深出 数组要开到