C 我已经解决了一个黑客级别的程序,但它显示了错误;由于超时而终止;。但是我正确地解决了一个测试用例

C 我已经解决了一个黑客级别的程序,但它显示了错误;由于超时而终止;。但是我正确地解决了一个测试用例,c,C,问题陈述 詹姆斯发现了一封他的朋友哈里给他女朋友写的情书。詹姆斯是个恶作剧者,所以他决定干预这封信。他把信中的所有单词都改成了回文 为此,他遵循两条规则: 他可以降低字母的值,例如,他可以将d改为c,但他不能将c改为d。 为了形成回文,如果他必须反复减少一个字母的值,他可以这样做,直到字母变成一个。一旦一封信被改成一封信,就不能再改了。 任何字母值的每次减少都作为单个操作计算。查找将给定字符串转换为回文所需的最小操作数 输入格式 第一行包含一个整数T,即测试用例的数量。 接下来的T行将分别包含一

问题陈述

詹姆斯发现了一封他的朋友哈里给他女朋友写的情书。詹姆斯是个恶作剧者,所以他决定干预这封信。他把信中的所有单词都改成了回文

为此,他遵循两条规则:

他可以降低字母的值,例如,他可以将d改为c,但他不能将c改为d。 为了形成回文,如果他必须反复减少一个字母的值,他可以这样做,直到字母变成一个。一旦一封信被改成一封信,就不能再改了。 任何字母值的每次减少都作为单个操作计算。查找将给定字符串转换为回文所需的最小操作数

输入格式

第一行包含一个整数T,即测试用例的数量。 接下来的T行将分别包含一个字符串。字符串不包含任何空格

约束条件 1.≤T≤10 1.≤ 弦长≤104 所有字符均为小写英文字母

输出格式

包含对应于每个测试用例的最小操作数的单行

样本输入

样本输出

解释

对于第一个测试用例,abc->abb->aba。 对于第二个测试用例,abcba已经是一个回文字符串。 对于第三个测试用例,abcd->abcc->abcb->abca=abca->abba。 对于第四个测试用例,cba->bba->aba

这是我的节目

#包括
#包括
#包括
#包括
int checkpal(字符pal[10000])
{
char pal1[10000];
int i,j,len;
strcpy(pal1,pal);
len=strlen(pal);
i=0;
j=len-1;
而(i对于(i=0;i它在计时上失败,因为您的解决方案太复杂。您不需要函数来检查整个字符串是否为回文。从字符串索引的结尾开始,直到它们满足时,将一个索引处的字符与另一个索引处的字符进行比较。然后向内调整索引

#include <stdio.h>
#include <string.h>

int main(void) {

    char pal[105];
    int T, i, j, k, diff, count;
    scanf("%d", &T);
    for(i=0; i<T; i++) {
        scanf("%s",pal);
        count=0;
        for(j=0,k=strlen(pal)-1; j<k; j++,k--) {
            diff = pal[j] - pal[k];
            if (diff > 0)
                count += diff;
            else
                count -= diff;
        }
        printf("%d ", count);
    }
    printf("\n");
    return 0;
}
程序输出:


由于解决方案太复杂,计时失败。您不需要函数来检查整个字符串是否为回文。从字符串末尾索引开始,直到它们满足要求为止。将一个索引处的字符与另一个索引处的字符进行比较。然后向内调整索引

#include <stdio.h>
#include <string.h>

int main(void) {

    char pal[105];
    int T, i, j, k, diff, count;
    scanf("%d", &T);
    for(i=0; i<T; i++) {
        scanf("%s",pal);
        count=0;
        for(j=0,k=strlen(pal)-1; j<k; j++,k--) {
            diff = pal[j] - pal[k];
            if (diff > 0)
                count += diff;
            else
                count -= diff;
        }
        printf("%d ", count);
    }
    printf("\n");
    return 0;
}
程序输出:


由于解决方案太复杂,计时失败。您不需要函数来检查整个字符串是否为回文。从字符串末尾索引开始,直到它们满足要求为止。将一个索引处的字符与另一个索引处的字符进行比较。然后向内调整索引

#include <stdio.h>
#include <string.h>

int main(void) {

    char pal[105];
    int T, i, j, k, diff, count;
    scanf("%d", &T);
    for(i=0; i<T; i++) {
        scanf("%s",pal);
        count=0;
        for(j=0,k=strlen(pal)-1; j<k; j++,k--) {
            diff = pal[j] - pal[k];
            if (diff > 0)
                count += diff;
            else
                count -= diff;
        }
        printf("%d ", count);
    }
    printf("\n");
    return 0;
}
程序输出:


由于解决方案太复杂,计时失败。您不需要函数来检查整个字符串是否为回文。从字符串末尾索引开始,直到它们满足要求为止。将一个索引处的字符与另一个索引处的字符进行比较。然后向内调整索引

#include <stdio.h>
#include <string.h>

int main(void) {

    char pal[105];
    int T, i, j, k, diff, count;
    scanf("%d", &T);
    for(i=0; i<T; i++) {
        scanf("%s",pal);
        count=0;
        for(j=0,k=strlen(pal)-1; j<k; j++,k--) {
            diff = pal[j] - pal[k];
            if (diff > 0)
                count += diff;
            else
                count -= diff;
        }
        printf("%d ", count);
    }
    printf("\n");
    return 0;
}
程序输出:

4
abc
abcba
abcd
cba
2 0 4 2