#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int chain[4];
long long f(char s, char e, int k) {
if (k == 1) {
if (s == 'L'&&e == 'L') {
if (chain[0] == 0)
return 0;
else
return 1;
}
if (s == 'L'&&e == 'V') {
if (chain[1] == 0)
return 0;
else
return 1;
}
if (s == 'V'&&e == 'L') {
if (chain[2] == 0)
return 0;
else
return 1;
}
if (s == 'V'&&e == 'V') {
if (chain[3] == 0)
return 0;
else
return 1;
}
}
long long res = 0;
if (s == 'L') {
if (chain[0] > 0) {
chain[0]--;
res += f('L', e, k - 1);
chain[0]++;
}
if (chain[1] > 0) {
chain[1]--;
res += f('V', e, k - 1);
chain[1]++;
}
}
else if (s == 'V') {
if (chain[2] > 0) {
chain[2]--;
res += f('L', e, k - 1);
chain[2]++;
}
if (chain[3] > 0) {
chain[3]--;
res += f('V', e, k - 1);
chain[3]++;
}
}
return res;
}
int main()
{
int N, K;
while (cin >> N >> K) {
memset(chain, 0, sizeof(chain));
string watch;
cin >> watch;
char s = watch[1], e = watch[0];
for (int i = 0; i < N; i++) {
string s;
cin >> s;
if (s == "LL")
chain[0]++;
else if (s == "LV")
chain[1]++;
else if (s == "VL")
chain[2]++;
else if (s == "VV")
chain[3]++;
}
long long res = f(s, e, K);
if (res == 0)
cout << "NO" << endl;
else
cout << "YES" << endl << res << endl;
}
return 0;
}
超时未通过,望讨论。
[Coursera]算法基础_Week9_考试_Q10
最新推荐文章于 2018-11-10 10:57:58 发布