YLOIHyl 2014-11-18 11:50 采纳率: 0%
浏览 2567

Linux下pipe()未包含头文件却提示重名问题

(C++)在Windows下可以正常工作的程序,在Linux下无法编译,提示类型未声明。但在此之前我已经声明了名为“pipe”的类,并且添加了构造器。经过查询得知pipe重名,但并未包含有“pipe”的头文件。请问各位大神能否给我一个解释?我的教练拒绝回答我。理由是他不喜欢C++!

#include <fstream>
#include <cstdlib>
using namespace std;
ifstream cin("bird.in");
ofstream cout("bird.out");
struct pipe
{
    int P;
    int L;
    int H;
    pipe(){P = L = H = -1;}
};

int up[10004] = {0},down[10004] = {0},n,m,k;
int nowx = 0,nowy = 0;
int point = 0;
int min_p = 50000;
int max_pipe = 0;
int cross = 0;
pipe Pi[10004];

int fly()           //检查下一位置可否飞越 
{
    if(nowx==n&&nowy>0)     //返回递归调用(到达终点) 
    {
        if(min_p>point) min_p = point;
        return 1;
    }
    int i;
    bool out = false;
    bool is_find = false;
    int back = 0;
    for(i = 1;!out;i++)         //点击 
    {
        nowy = nowy + up[nowx] * i;
        nowx++;
        point += i;
        if(nowy>=m) back = nowy - m,nowy = m,out = true;
        if(Pi[nowx].P != -1)   //下一个位置上有管道
        {
            if(Pi[nowx].L>=nowy||Pi[nowx].H<=nowy) //当前点击次数无法飞越
            {
                if(max_pipe<cross) max_pipe = cross;
                if(!out)
                { 
                    nowx--;                 //回溯 
                    nowy -= up[nowx] * i;   //回溯 
                }
                else
                {
                    nowx--;
                    nowy = nowy + back;
                    nowy = nowy - up[nowx] * i;
                }
                point -= i;             //回溯
                continue;      //下一次循环 
            } 
            else
            {
                cross++;
                int r = fly();    //检查下一位置
                if(r==1) is_find = true;
                cross--;
            }
        }

        else                     //下一个位置上无管道
        {
            int r = fly();       //检查下一位置 
            if(r==1) is_find = true;   //可以飞越 
            if(!out)
            { 
                nowx--;                 //回溯 
                nowy -= up[nowx] * i;   //回溯 
            }
            else
            {
                nowx--;
                nowy = nowy + back;
                nowy = nowy - up[nowx] * i;
            }
            point -= i;             //回溯
        }
    }

    nowy = nowy - down[nowx];              //不点击 
    if(nowy<=0)
    {
        nowy += down[nowx];
        if(is_find) return 1;
        return 0;
    }
    nowx++;
    if(Pi[nowx].P != -1)   //下一个位置上有管道
    {
        if(Pi[nowx].L>=nowy||Pi[nowx].H<=nowy) //下落无法飞越
        {
            if(max_pipe<cross) max_pipe = cross;
        } 
        else          
        {
            cross++;
            int r = fly();    //检查下一位置
            if(r==1) is_find = true;
            cross--;
        }
    }

    else                     //下一个位置上无管道
    {
        int r = fly();       //检查下一位置 
        if(r==1) is_find = true;   //可以飞越 
    }
    nowx--;
    nowy = nowy + down[nowx];
    if(is_find) return 1;
    return 0;
}

int main()
{
    int i;

    cin >> n >> m >> k;
    for(i = 0;i < n;i++)
        cin >> up[i] >> down[i];
    for(i = 0;i < k;i++)
    {
        int temp;
        cin >> temp;
        cin >> Pi[temp].L >> Pi[temp].H;
        Pi[temp].P = 1;
    }

    int ans = 0,temp = 0;
    for(i = 1;i <= m;i++)
    {
        nowx = 0;
        nowy = i;
        point = 0;
        temp = fly();
        if(temp == 1) ans = 1;
    }
    if(ans==0) cout << 0 << endl << max_pipe;
    else cout << 1 << endl << min_p;
    cin.close();
    cout.close();
    return 0;
}
  • 写回答

2条回答

  • wangqiang624731186 2014-11-19 00:17
    关注

    不贴代码,没法分析啊
    写代码的错误到最发现都是小错误

    你的教练不会,所以。。。。嘿嘿

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!