字梯的c程序
我已经为word ladder编写了C代码。 它正在验证给定的测试用例。但是对于1个测试用例,它的输出是错误的,我不知道应该在哪里进行更改 问题: 有一类字谜游戏,给你两个单词,比如bick和MAKE,你必须一次换一个字母才能从一个单词到另一个单词。解决这样的难题需要良好的词汇和一些横向思维,但一旦有了答案,检查答案只会很乏味,而且适合计算机来做。请注意,即使是正确的解决方案也不能保证是最小的 如果梯形图中的每对相邻单词适用以下条件,则解决方案是正确的:字梯的c程序,c,word,C,Word,我已经为word ladder编写了C代码。 它正在验证给定的测试用例。但是对于1个测试用例,它的输出是错误的,我不知道应该在哪里进行更改 问题: 有一类字谜游戏,给你两个单词,比如bick和MAKE,你必须一次换一个字母才能从一个单词到另一个单词。解决这样的难题需要良好的词汇和一些横向思维,但一旦有了答案,检查答案只会很乏味,而且适合计算机来做。请注意,即使是正确的解决方案也不能保证是最小的 如果梯形图中的每对相邻单词适用以下条件,则解决方案是正确的: 它们的长度相同 正好有一个字母变了
- 它们的长度相同
- 正好有一个字母变了
#include<stdio.h>
#include<string.h>
int main()
{
int i,count;
char a[100],b[100],c[100];
int flag=1;
scanf("%s",a);
do
{
scanf("%s",b);
if(b[0]=='#')
break;
if(strlen(a)==strlen(b))
{ i=0,count=0;
while(a[i]!='\0')
{
if(a[i]!=b[i])
count++;
if(count==2)
{
flag=0;
}
i++;
}
}
else
{
flag=0;
}
scanf("%s",a);
if(a[0]=='#')
break;
// scanf("%s",c);
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
}
while(a[0]!='#');
if(flag==1)
printf("Correct");
else
printf("Incorrect");
return 0;
}
#包括
#包括
int main()
{
int i,计数;
字符a[100],b[100],c[100];
int标志=1;
scanf(“%s”,a);
做
{
scanf(“%s”,b);
如果(b[0]='#')
打破
如果(strlen(a)=strlen(b))
{i=0,计数=0;
而(a[i]!='\0')
{
如果(a[i]!=b[i])
计数++;
如果(计数=2)
{
flag=0;
}
i++;
}
}
其他的
{
flag=0;
}
scanf(“%s”,a);
如果(a[0]='#')
打破
//scanf(“%s”,c);
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
}
而(a[0]!='#');
如果(标志==1)
printf(“正确”);
其他的
printf(“不正确”);
返回0;
}
此输入的程序输出不正确
代码->cade->美食->日期->数据
你读单词的次数太多了。我的意思是,你读的比你比较多 看看这个:
scanf()
(进入a
)不计算在内。它过去有一些东西可以比较scanf()
(进入b
)a
和b
的比较scanf()
(进入a
)李>
scanf()
和1个比较
你的缩进也很痛。那么,你的最后期限是什么时候?@gustafbstrom今天是最后期限。.在C语言中,你可以用字符做算术。示例“a”-“b”产生-1(!=0)。也许你可以用这个想法来改进你的解决方案。请格式化你的代码。这很痛。@Elyasin我的逻辑有什么错。读
a
;2读b
;3比较a
和b
;4将b
复制到a
;5转到2
Correct
MAKE
BAKE
BONK
BONE
BANE
#
Incorrect
#include<stdio.h>
#include<string.h>
int main()
{
int i,count;
char a[100],b[100],c[100];
int flag=1;
scanf("%s",a);
do
{
scanf("%s",b);
if(b[0]=='#')
break;
if(strlen(a)==strlen(b))
{ i=0,count=0;
while(a[i]!='\0')
{
if(a[i]!=b[i])
count++;
if(count==2)
{
flag=0;
}
i++;
}
}
else
{
flag=0;
}
scanf("%s",a);
if(a[0]=='#')
break;
// scanf("%s",c);
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
}
while(a[0]!='#');
if(flag==1)
printf("Correct");
else
printf("Incorrect");
return 0;
}