[Coursera]算法基础_Week9_考试_Q10

来源:互联网 发布:厦门优化公司 编辑:程序博客网 时间:2024/05/29 12:37
#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;elsereturn 1;}if (s == 'L'&&e == 'V') {if (chain[1] == 0)return 0;elsereturn 1;}if (s == 'V'&&e == 'L') {if (chain[2] == 0)return 0;elsereturn 1;}if (s == 'V'&&e == 'V') {if (chain[3] == 0)return 0;elsereturn 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;elsecout << "YES" << endl << res << endl;}return 0;}
超时未通过,望讨论。
0 0