为什么在自己电脑上没问题,可OJ老是提示栈错误?

发布于 2022-09-05 10:30:45 字数 2374 浏览 21 评论 0

我在自己的电脑上运行没有问题,可网站https://www.nowcoder.com/pat/...)老是说栈错误。
我已经改了无数次了,实在想不到哪里可以导致栈溢出,请指正
图片描述

// Recover the Smallest Number (30)
// https://www.nowcoder.com/pat/5/problem/4025
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct Str {
    char str[10];
};


void stringPlus(char a[], char b[], char result[]) {
    int len1 = strlen(a);
    for (int i = 0, k = 0; i < len1; ++i, ++k) {
        result[k] = a[i];
    }
    int len2 = strlen(b);
    for (int j = 0, k = len1; j < len2; ++j, ++k) {
        result[k] = b[j];
    }
    result[len1 + len2] = '\0';
}

bool cmpByString(Str a, Str b) {
    char stra[20];
    stringPlus(a.str, b.str, stra);
    if (strlen(stra) != (strlen(a.str) + strlen(b.str))) {
        printf("Error add");
    }
    char strb[20];
    stringPlus(b.str, a.str, strb);
    if (strlen(stra) != (strlen(a.str) + strlen(b.str))) {
        printf("Error add");
    }
    int len1 = strlen(stra);
    int len2 = strlen(strb);
    if ((len1 != len2) || (len1 > 16) || (len1 == 0)) {
        printf("Error len!\n");
    }
    for (int i = 0; i < len1; ++i) {
        if (stra[i] < strb[i]) {
            return true;
        } else if (stra[i] > strb[i]) {
            return false;
        }
    }

    return true;
}

Str Node[10010];

int main() {
    int N;
    scanf("%d", &N);
    for (int i = 0; i < N; ++i) {
        scanf("%s", Node[i].str);
    }
    sort(Node, Node + N, cmpByString);
    bool firstZero = true;
    for (int i = 0; i < N; ++i) {
        if (firstZero) {
            for (int j = 0; Node[i].str[j] != '\0'; ++j) {
                if ((Node[i].str[j] == '0') && firstZero) {
                    continue;
                } else {
                    firstZero = false;
                    printf("%c", Node[i].str[j]);
                }
            }
        } else {
            printf("%s", Node[i].str);
            firstZero = false;
        }
    }
    if (firstZero) {
        printf("0");
    }
    printf("\n");
    return 0;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一直在等你来 2022-09-12 10:30:45

嗯,这是一个冷门的知识点

https://stackoverflow.com/que...

情绪少女 2022-09-12 10:30:45

说实话,oj上的题目不要拿来这里问,不是不能问,而是这种类型的问题最好不要问,既然走OJ路,就注定孤身奋战。

clipboard.png

牛客的错误说明和hdu,poj这些的不一样,不过据我猜测,既然你牵扯到栈的问题,要不是数组开小了,要不就是运行中栈爆了(比如停不下来的递归)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文