c++-这段代码有哪里会引起RuntimeError的地方么

问题描述

这段代码有哪里会引起RuntimeError的地方么

我在本地测试没出过问题,但是放到oj系统上就runtime error,错误代码11。
应该是访问到未定义的内存,可是我查了好久都没找到哪里越界了,求指教

 #include <cstdio>

#define Length 1600050

struct StacketNode
{
    int data;
    StacketNode* next;
};

class Stacket
{
private:    int _size;
            StacketNode* Bottom;
            StacketNode* Top;
public:
    Stacket();
    ~Stacket();
    void Push(int tra);
    int Pop();
    int GetTop();

private:

};

Stacket::Stacket()
{
    Bottom = new StacketNode();
    Bottom->data = 0;
    Top = Bottom;
    _size = 0;
}

void Stacket::Push(int tra)
{
    StacketNode* temp = new StacketNode();
    temp->data = tra;
    temp->next = Top;
    Top = temp;
    _size++;
    return;
}

int Stacket::Pop()
{
    StacketNode* temp;
    int temint;
    temp = Top;
    temint = temp->data;
    Top = Top->next;
    Top->next;
    delete temp;
    _size--;
    return temint;
}

int Stacket::GetTop()
{
    return Top->data;
}

int main()
{
    int n = 0, m = 0, b = 0, t = 0;
    int trains[Length];
    bool Isfeasible = true;
    scanf("%d %d",&n,&m);
    int Seq[Length];
    Stacket* A = new Stacket();
    Stacket* B = new Stacket();
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &trains[i]);
        A->Push(n-i);
    }
    for (int i = 0; i < n; i++)
    {

            for (int j = 0; j < n; j++)
            {
                if (B->GetTop() == trains[i])
                {
                    B->Pop();
                    Seq[t++] = 1;
                    b--;
                    break;
                }
                else if(A->GetTop() == 0)
                {
                    Isfeasible = false;
                    break;
                }
                else
                {
                    if (++b <= m)
                    {
                        B->Push(A->Pop());
                        Seq[t++] = 0;
                    }
                    else
                    {
                        Isfeasible = false;
                        break;
                    }
                }
                if (Isfeasible == false)
                    break;
            }

    }
    if (Isfeasible == false)
        printf("Non");
    else
    {
        for (int i = 0; i < t; i++)
        {
            switch (Seq[i])
            {
            case 0:
                printf("pushn");
                break;
            case 1:
                printf("popn");
            }
        }
    }
    return 0;
}

补充OJ问题:

描述
某列车调度站的铁道联接结构如Figure 1所示。

其中,A为入口,B为出口,S为中转盲端。所有铁道均为单轨单向式:列车行驶的方向只能是从A到S,再从S到B;另外,不允许超车。因为车厢可在S中驻留,所以它们从B端驶出的次序,可能与从A端驶入的次序不同。不过S的容量有限,同时驻留的车厢不得超过m节。

设某列车由编号依次为{1, 2, ..., n}的n节车厢组成。调度员希望知道,按照以上交通规则,这些车厢能否以{a1, a2, ..., an}的次序,重新排列后从B端驶出。如果可行,应该以怎样

的次序操作?

输入
共两行。

第一行为两个整数n,m。

第二行为以空格分隔的n个整数,保证为{1, 2, ..., n}的一个排列,表示待判断可行性的驶出序列{a1,a2,...,an}。

输出
若驶出序列可行,则输出操作序列,其中push表示车厢从A进入S,pop表示车厢从S进入B,每个操作占一行。

若不可行,则输出No。

样例
见英文题面

限制
1 ≤ n ≤ 1,600,000

0 ≤ m ≤ 1,600,000

时间:2 sec

空间:256 MB
Example 1
Input

5 2
1 2 3 5 4
Output

push
pop
push
pop
push
pop
push
push
pop
pop
Example 2
Input

5 5
3 1 2 4 5
Output

No

解决方案

#define Length 1600050
int trains[Length];
int Seq[Length]; 太大导致的stack overflow,应该使用堆上的内存
int *trains=new int[Length];
int *Seq=new int[Length];

解决方案二:

过深的递归造成堆栈溢出,或者使用了太多的内存,内存溢出,或者内存泄漏

时间: 2024-12-09 19:11:19

c++-这段代码有哪里会引起RuntimeError的地方么的相关文章

二叉树 二叉树重构-这段代码有哪里会引起RuntimeError的地方么

问题描述 这段代码有哪里会引起RuntimeError的地方么 我在本地测试没出过问题,但是放到oj系统上就runtime error,错误代码11. 应该是访问到未定义的内存,可是我查了好久都没找到哪里越界了,求指教 #include <cstdio> #pragma warning(disable:4996) class TreeNode { public: int data; TreeNode* fo; TreeNode* ba; }; class Tree { public: int

c++-这段代码怎么改,才能运行(main的第一行要保留)

问题描述 这段代码怎么改,才能运行(main的第一行要保留) #include using namespace std; class student { public: student(int n,float s):num(n),score(s){} void change(int n,float s){num=n;score=s;} void display(){cout<<num<<" "<<score<<endl;} private

孙鑫-Visual C++的一段代码搞不懂求解释

问题描述 Visual C++的一段代码搞不懂求解释 说一下自己的理解.题目是孙鑫老是的文本输出的例子. 1:GetBkColor得到背景白色,然后SetTextColor(白色)把背景白色设置为文字颜色.跟着clr应该是赋值得到白色了吧,但是F5看的时候是黑色,就要原文字颜色.我这么理解应该错了 1 COLORREF clr=dc.SetTextColor(dc.GetBkColor()); //GetBkColor属于dc对象,改变dc中的背景值(白色).然后SetTextColor用白色值

android-贴一段代码,关于自动接听的,请老司机帮帮忙

问题描述 贴一段代码,关于自动接听的,请老司机帮帮忙 public synchronized void answerRingingCall(Context context) { try { Log.e("try to answer", "below 2.3"); //ITelephony itelephony = getITelephony(mTelephonyManager); Method method = Class.forName("android

编译错误-出现了fatal exception :main 这是其中的一段代码,大家看看有什么问题

问题描述 出现了fatal exception :main 这是其中的一段代码,大家看看有什么问题 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loginBtn = (Button)findViewById(R.id.login_btn_login); registerBtn = (Butt

求助servlet 这段代码什么意思

问题描述 求助servlet 这段代码什么意思 */ @RequestMapping("/getTile.do") public @ResponseBody String getTile(HttpServletResponse response, @RequestParam(value = "map_id", required = true) String mapId, @RequestParam(required = true) int level, @Reque

ancy orm-用FancyForm添加用户角色,求解释这段代码,

问题描述 用FancyForm添加用户角色,求解释这段代码, var form = $('#form').FancyForm({ title: '添加角色' width: 345 height: 325 inputWidth: 190 labelWidth: 60 url: '<%=path %>/sysRoleController/addRole.do' params: { param1: 1 param2:'string' } defaults: { type: 'string' } it

C++课程设计老师说我没有用到类 求指教这段代码要怎么修改加上类

问题描述 C++课程设计老师说我没有用到类 求指教这段代码要怎么修改加上类 #include #include #include using namespace std; const double pi = 3.14159265; const double e = 2.718281828459; const int SIZE = 1000; typedef struct node//为了处理符号而建立的链表(如: 1+(-2)) { char data; node *next; }node; t

ip地址-求解释下这段代码...感激不尽

问题描述 求解释下这段代码...感激不尽 u_long ulDestIP; u_long ulDestIP1=inet_addr(a); u_long ulDestIP2=inet_addr(b); unsigned long count = ntohl(ulDestIP2 - ulDestIP1)-1; struct in_addr in; unsigned long hostip; for(unsigned int i = 0; i <=count+1; i++) { hostip = nt