P1019 [NOIP2000 提高组] 单词接龙
2024-01-03 10:49:25
网址如下:P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
很怪,不知道该说什么
我试了题目给的第一个测试点的输入,发现输出和测试点的一样,但是还是WA
不是很懂为什么
有没有大佬帮我看一下
代码如下:
#include<stdio.h>
#include<string.h>
typedef struct Word{
char str[101];//单词
int m;//剩余使用次数
int l;//单词的长度
}Word;
void dg(int len);
Word word[20];
int maxn, maxlen, n;
char c, str_m[1000];
int main(void)
{
//输入
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%s", &word[i].str);
word[i].m = 2, word[i].l = (int)strlen(word[i].str);
maxlen = (maxlen > word[i].l) ? maxlen : word[i].l;
}
getchar(), c = getchar();
//递归遍历找开头
for(int i = 0; i < n; i++)
if(c == word[i].str[0])
{
word[i].m--, strcpy(str_m, word[i].str);
dg(word[i].l);
word[i].m++;
}
//输出
printf("%d", maxn);
return 0;
}
void dg(int len)
{
//更新最大长度
maxn = (maxn > len) ? maxn : len;
//指针作为比较对象
const char * p = (maxlen <= len) ? &str_m[len - maxlen + 1] : &str_m[1];
int tmp = (maxlen <= len) ? maxlen - 1 : len - 1;
//遍历寻找下一个单词
while(tmp)
{
for(int i = 0; i < n; i++)
{
if(!word[i].m || tmp >= word[i].l) continue;
char * t_p = strstr(word[i].str, p);
if(t_p == word[i].str)//如果匹配对象在字符串开头部分
{
word[i].m--, strcpy(&str_m[len], &word[i].str[tmp]);
dg(len + word[i].l - tmp);
word[i].m++, str_m[len] = '\0';
}
}
tmp--, p++;
}
}
会是因为编译器不同吗?
文章来源:https://blog.csdn.net/Fool256353/article/details/135354277
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!