现在基本都只能做到模拟的程度。我的思路是把将敌我的棋子放在一个数组,然后对Q做循环,当q不为0的时候就将数组中大于0的元素自减,如果在这个过程中有元素变为0,就给标志赋值true,判断这个标志时为true时q++,当循环结束后判断数组中是否还有大于0的元素,如果有的话说明GG了,反之则赢了。(个人认为我的代码存在一定的问题,因为q如果很大的话,q不能减到0,从而存在陷入死循环,但是因为题目给的q很小,所以这个题能AC) #include
using namespace std;
int main() { int T; cin >> T; while (T--) { int m, n, q; cin >> m >> n >> q; //int a1[m]; //int a2[n]; int k = 0; int arr[m + n]; for (int i = 0; i < m + n; i++) { //cin >> a1[i]; cin >> arr[k]; k++; } while (q--) { bool flag = false;
for (int i = 0; i < m + n; i++) {
if (arr[i] > 0) {
arr[i]--;
if (arr[i] == 0) {
flag = true;
}
}
}
if (flag == true) {
q++;
}
}
bool flag2 = false;
for (int i = 0; i < m + n; i++) {
if (arr[i] != 0) {
flag2 = true;
}
}
if (flag2 == true) {
cout << "GG" << endl;
}
else {
cout << "Legendary" << endl;
}
}
}