麻烦您能不能把代码打成一排排的
by xieyihang @ 2018-06-23 23:10:13
两行之间按两次enter就可以换行,或者直接用功能表里“插入代码”一项插入也行
by xieyihang @ 2018-06-23 23:11:25
经本蒟蒻人工排版的您的代码
```
#include<iostream>
using namespace std;
int a[100],b[100],flag[10000]={1};
int main()
{
int l,m,i,j,x=0;
cin>>l>>m;
for(i=0;i<=m-1;i++)
{
cin>>a[i]>>b[i];
for(j=0;j<=l;j++)
if(j>=a[i]&&j<=b[i])
flag[j]=0;
}
for(j=0;j<=l;j++)
if(flag[j]==1)
x++;
cout<<x;
return 0;
}
```
嗯?哪里有错?for循环那里好像漏了几个大括号
by Ophelia @ 2018-06-27 14:39:47
等等,不对,我再看看
by Ophelia @ 2018-06-27 14:41:01
是这样的,您的flag数组,也就是标记数组初始化的时候只初始化了第一个值,后面的值还是0。所以最后答案是1。
应该用一个for循环初始化所有值,或者memset(flag,a,1,sizeof(flag))初始化。
下面是本蒟蒻修改过+人工排版的代码
```
#include<iostream>
using namespace std;
int a[100],b[100],flag[10000];
int main()
{
int l,m,i,j,x=0;
cin>>l>>m;
for(int i=0;i<=l;i++)
flag[i]=1;
for(i=0;i<=m-1;i++)
{
cin>>a[i]>>b[i];
for(j=0;j<=l;j++)
{
if(j>=a[i]&&j<=b[i])
flag[j]=0;
}
}
for(j=0;j<=l;j++)
{
if(flag[j]==1)
x++;
}
cout<<x;
return 0;
}
```
by Ophelia @ 2018-06-27 14:46:40