首页 > 开发 > C++ > 正文

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

2017-09-11 21:19:10  来源: 网友分享

我在自己的电脑上运行没有问题,可网站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;}

解决方案

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

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