应该是文件出了问题,但不知具体
校门外的树问题描述:
某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们
可以把马路看成一个数轴,马路的一端在数轴0 的位置,另一端在L 的位置;数轴上的每
个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已
知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些
区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上
还有多少棵树。
输入数据:
输入的第一行有两个整数L(1 <= L <= e9)和 M(1 <= M <= 100),L 代表马路
的长度,M 代表区域的数目,L 和M 之间用一个空格隔开。接下来的M 行每行包含两个不
同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出要求:
输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
输入样例:
500 3
150 300
100 200
470 471
输出样例:
298
#include <fstream>
using namespace std;
int main() {
int l,m;
ifstream inf("tree.in",ios::in);
ofstream outf("tree.out",ios::out);
inf>>l;
inf>>m;
int ml[l];
int sy=0;
for(int i=0;i<l;i++)
ml[i]=1;
int qy[m][2];
for(int i=0;i<m;i++){
inf>>qy[i][0];
inf>>qy[i][1];
for(int j=qy[i][0];j<qy[i][1];j++)
ml[j-1]=0;
}
for(int i=0;i<l;i++)
sy=sy+ml[i];
outf<<sy+1;
outf.close();
}
————————————————————————————————————————————————————————————————————————————————————————————————————
应用程序错误
换成数组
#include <iostream>
using namespace std;
int main() {
int l,m;
cin>>l>>m;
int ml[l];
int sy=0;
for(int i=0;i<l;i++)
ml[i]=1;
int qy[m][2];
for(int i=0;i<m;i++){
cin>>qy[i][0];
cin>>qy[i][1];
for(int j=qy[i][0];j<qy[i][1];j++)
ml[j-1]=0;
}
for(int i=0;i<l;i++)
sy=sy+ml[i];
cout<<sy+1;
system("PAUSE");
return 0;
}
可以运行
论坛里也有这道题,但还是想自己想想,
但到这里就卡住了
想知道具体是什么原因,哪个语句出错了