假设我们有一个单词列表。现在考虑一个幽灵游戏,两个玩家可以参与其中。此处,玩家交替在字符串后附加字母。并且所生成的字符串必须是列表中单词的有效前缀,拼写出列表中任何单词的玩家都会输掉。我们必须检查第一个玩家是否可以赢,如果两个玩家都处于最佳状态。
因此,如果输入类似于words=[“manage”,“manager”,“min”],那么输出将为True,因为它们可以像-
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; bool solve(vector<string> &words) { map<char, set<string>> mp; for (auto &it : words) { char ch = it[0]; mp[ch].insert(it); } int mn = INT_MAX; for (auto &it : mp) { string str = *(it.second.begin()); int size = str.size(); if (size % 2 == 0) return 1; } return 0; } int main(){ vector<string> v = {"manage", "manager", "min"}; cout << solve(v); }
{"manage", "manager", "min"}
输出结果1