紧急求助!!!90分,求助!!!
查看原帖
紧急求助!!!90分,求助!!!
1054952
zzCX_df楼主2024/7/26 17:16
#include <bits/stdc++.h>

using namespace std;

int n, answer, f[17][(1 << 16) + 1];
string s[17];
vector<int> q[5];

inline int pro(char ch) {
	if (ch == 'A')
		return 0;
	if (ch == 'E')
		return 1;
	if (ch == 'I')
		return 2;
	return 3; 
}

inline int dfs(int i, int j) {
	if (f[i][j])
		return f[i][j];
	int sum = 0;
	for (auto y : q[pro(s[i][s[i].size() - 1])])
		if (!(j >> (y - 1) & 1))
			sum = max(sum, dfs(y, j | (1 << (y - 1))));
	f[i][j] = sum + s[i].size();
	return f[i][j];
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		cin >> s[i];
	for (int i = 1; i <= n; i++)
		q[pro(s[i][0])].push_back(i);
	for (int i = 1; i <= n; i++) 
		answer = max(answer, dfs(i, (1 << (i - 1))));
	printf("%d\n", answer);
	return 0;
}
2024/7/26 17:16
加载中...