| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 364 人关注过本帖
标题:应该是文件出了问题,但不知具体
只看楼主 加入收藏
a739357310
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-5-5
收藏
 问题点数:0 回复次数:2 
应该是文件出了问题,但不知具体
校门外的树
问题描述:
某校大门外长度为 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;        
}


            
可以运行



论坛里也有这道题,但还是想自己想想,
但到这里就卡住了
想知道具体是什么原因,哪个语句出错了
2013-06-03 19:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
听不懂!你想问什么?
你给了第一段代码,只说“应用程序错误”,但你并没有任何问题想问,既然如此何必贴出来?
第二段代码,你既然说“可以运行”了,怎么又说“但到这里就卡住了”,你到底想问什么呀?

我粗看了一下你的代码
a. 只有C语言才允许变长数组,在C++中,数组元素必须是一个 编译期常数。你的代码在某些编译器中能编译通过,但这不代表其符合C++语法。
b. "0,1,2,……,L",那数组元素数目就应该是 L+1 个。
2013-06-04 08:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    size_t l, m;
    cin >> l >> m;

    vector<bool> trees( l+1, true );
    for( size_t i=0; i!=m; ++i )
    {
        size_t a, b;
        cin >> a >> b;

        std::fill( trees.begin()+a, trees.begin()+b+1, false );
    }

    size_t num = std::count( trees.begin(), trees.end(), true );
    cout << num << endl;

    return 0;
}
2013-06-04 08:38
快速回复:应该是文件出了问题,但不知具体
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018341 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved