Hackerrank中有没有与C不同的东西(获得不同的输出)?

时间:2015-02-28 17:23:43

标签: c printf output palindrome

我一直在努力为Hackerrank做一个Love-Letter神秘挑战。 以下是规则:https://www.hackerrank.com/challenges/the-love-letter-mystery

这是我的解决方案:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define MAX 1000

int check_palindrome(char *A)
{
    int i = 0, j;
    while(A[i])
        i++;

    i -= 1;

    for(j = 0; j <= i; j++)
    {
        if(A[j] != A[i - j])
            return 0;
    }
    return 1;
}

int love_letter(char *A)
{
    int i = 0;
    int j;
    int times;
    while(A[i])
        i++;

    i -= 1;

    if(i == 0)
        return 0;

    if(check_palindrome(A))
        return 0;

    for(j = i; j >= 0; j--)
    {
        while(A[j] != 'a')
        {
            if(check_palindrome(A))
                return times;
            else
            {
                A[j] -= 1;
                times += 1;
            }
        }
    }
    return times;
}

int main() {

    int t, i;
    char a[MAX];
    scanf("%d", &t);
    for(i = 0; i < t; i++)
    {
        scanf("%s", a);
        printf("%d\n", love_letter(a));
    }
    return 0;
}

在我的计算机上测试时,我得到了正确的输出。但是,当我尝试在Hackerrank上运行代码时,它告诉我的程序总是输出:

0
0
0
0

当然这是错的,它在测试用例中失败了。但那是为什么呢? C或其他什么东西有什么不同吗?或者这只是网站的问题?还是用我的代码?

1 个答案:

答案 0 :(得分:2)

至少,您似乎忘记了初始化变量&#34; times&#34;。

就实际算法而言,请记住,为了使字母匹配,您可以减少它们中的任何一个(或两个)。我认为你没有正确处理所有案件。