求助,第四个点WA了
查看原帖
求助,第四个点WA了
1158336
lym61楼主2024/1/12 13:46
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#define MAX(a,b) ((a)>(b)?(a):(b))
char str[20][20],ch;
int n,vis[20], max_len, max;
bool Check(const char s1[],const char s2[],int* i)
{
	int len1 = strlen(s1), len2 = strlen(s2),k = 1;
	while (k < len1 && k < len2 ) {
		if (s1[len1 - k] != s2[0]) {
			k++;
			continue;
		}
		else {
			if (strncmp(s1 + len1 - k, s2, k) == 0) {	
				max_len += len2 - k;
				*i = k;
				return true;
			}
			else return false;
		}
	}
	return false;

}
void dfs(char const *s1)
{
	for (int i = 0; i < n; i++)
	{
		int k = 0;
		if (vis[i] != 2 && Check(s1, str[i],&k)) {
			
			vis[i]++;
			dfs(str[i]);
			max = MAX(max, max_len);
			max_len -= (strlen(str[i]) - k);
			vis[i]--;
		}
	}
}
int main()
{
	scanf("%d", &n);
	getchar();
	getchar();
	for (int i = 0; i < n; i++)
	{
		scanf("%s", str[i]);
		getchar();
		getchar();
	}
	scanf("%c", &ch);

	for (int i = 0; i < n; i++)
	{
		if (ch == str[i][0]) {
			max_len = strlen(str[i]);
			vis[i]++;
			dfs(str[i]);
			vis[i]--;
		}
	}

	printf("%d", max);

	return 0;
}
2024/1/12 13:46
加载中...