gpt4 book ai didi

c - 我正在解决一个编程测验,但我无法理解此代码第 10 行背后的逻辑

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:57:17 24 4
gpt4 key购买 nike

这是一个 codechef 测验。第一行输入已知的字母。第二个输入接受输入的数量,对于后面给出的每个单词,我们必须执行操作,以确定该字符串是否可以由已知字母生成。我无法理解为什么在 第 10 行 中,索引为 s[i]-97 的整数数组 latin 被分配给 1。谁能解释一下?

int main(void) 
{

int latin[26] = {0};
int n, i, j, flag;
char s[26], w[12];

scanf ("%s", s);
for (i=0; i<strlen(s); i++)
latin[s[i]-97] = 1;

scanf ("%d", &n);
for (i=0; i<n; i++)
{
scanf ("%s", w);
flag = 0;
for (j=0; j<strlen(w); j++)
{
if (latin[w[j]-97] != 1)
{
printf ("No\n");
flag = 1;
break;
}
}

if (flag == 0)
printf ("Yes\n");
}
return 0;
}

最佳答案

latin 是一个数组,告诉我一个字母是否已知。例如:

latin[0] == 1; //letter 'a' is known
latin[3] == 0; //letter 'd' is unknown

最初,所有字母都是未知的。如果已知字母“d”:

latin['d'-97] = 1; //letter 'd' is set to be known
//'d' has the ascii value of 100, thus 'd' - 97 equals 3.

为了检查字符串 w 是否有效,程序循环遍历字符串中的每个字母,如果有未知字母,则该字符串无效。

关于c - 我正在解决一个编程测验,但我无法理解此代码第 10 行背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com