c - 关于hackerrank问题的运行时错误无缘无故?

标签 c runtime-error

这是问题:
https://www.hackerrank.com/challenges/lisa-workbook/problem
我的代码通过了除一个以外的所有测试用例。我收到的消息只是运行时错误。即使我在应该实现的函数的开头返回0,我仍然会收到此错误,而在所有其他测试用例中,我都会得到错误的答案。
这不是发生这种情况的唯一的问题。在过去的几天里,我遇到了3或4个问题,一个奇怪的情况总是带来运行时错误。最后,我必须实现一个Python 3解决方案(具有相同的逻辑),该解决方案通过了所有测试用例,以解决这些问题。
我想知道这是网站上的错误还是我理解不正确。这是我针对此问题的函数实现:

int workbook(int n, int k, int arr_count, int* arr)
{
    int tmp = 1, specprob = 0;
    int *chstart = malloc(n * sizeof(int));
    int *chend = malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        chstart[i] = tmp;
        tmp += arr[i] / k - 1;
        if (arr[i] % k != 0) {
            tmp++;
        }
        chend[i] = tmp;
        tmp++;
        if (!(arr[i] < chstart[i])) {
            int qno = 0, chpage = 1, iqno = 0;
            for (int j = chstart[i]; j < chend[i] + 1; j++) {
                if (chpage * k <= arr[i]) {
                    qno += k;
                } else {
                    qno += (k - (chpage * k - arr[i]));
                }
                if (j > iqno && j < qno + 1) {
                    specprob++;
                }
                iqno = qno;
                chpage++;
            }
        }
    }
    return specprob;
}

最佳答案

它看起来像个错误,因为当您仅使用return 0;运行空函数时,它会给出相同的运行时错误。
但是,目前,如果您不太介意不同的语言,则可以对代码进行一些小的更改以使其可以为C++编译(不要忘了更改语言选择):

int workbook(int n, int k, vector<int> arr) 
{
    int tmp = 1, specprob = 0;
    int *chstart = (int*)malloc(n * sizeof(int));
    int *chend =  (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
    {
        chstart[i] = tmp;
        tmp += arr[i] / k - 1; 
        if (arr[i] % k != 0)
        {
            tmp++;
        }
        chend[i] = tmp;
        tmp++;
        if (!(arr[i] < chstart[i]))
        {
            int qno = 0, chpage = 1, iqno = 0;
            for (int j = chstart[i]; j < chend[i] + 1; j++)
            {
                if (chpage * k <= arr[i])
                {
                    qno += k;
                }
                else
                {
                    qno += (k - (chpage * k - arr[i]));
                }
                if (j > iqno && j < qno + 1)
                {
                    specprob++;
                }
                iqno = qno;
                chpage++;
            }
        }
    }
    return specprob;
}

关于c - 关于hackerrank问题的运行时错误无缘无故?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65784360/

相关文章:

ios - 哪里有对 iOS 和 Mac OS X 网络错误(如 kCFStreamErrorDomainSSL)的清晰、完整的引用?

将 ASM 转换为 C(不是逆向工程)

字符编码 C 和瑞典语 åöä

c++ - _stricmp 在字符串匹配时返回错误值。该怎么办?

c++ - glibc 检测到错误,可能是内存泄漏?

razor - 错误 RZ3007 : Targeted tag name cannot be null or whitespace

c - 无法理解 select() 中 write_fds 的使用 - c

c - 应用 XOR 交换算法时的指针问题

excel - 从另一个工作簿运行 Excel 宏

java - 意外的 IndexOutOfBoundsException