20分求助,de了5次bug了,还是20

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

可以用断点测试,对于这个题可以更好的发现错误,我一开始也是有两个判断写反了。 附上代码```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, na, nb; cin >> n >> na >> nb; vector<int> a(na); vector<int> b(nb); int ansa = 0,ansb = 0; for (int i = 0 ; i < na; i++) { cin >> a[i]; } for (int i = 0 ; i < nb; i++) { cin >> b[i]; } int i = 0, j = 0; for (int x = 0; x < n; x++) { /*cout << i <<' '<< j << ' ' << a[i] << ' ' << b[j];*/ if (a[i] == 0) { if (b[j] == 1 || b[j] == 4) { ansb++; } else if (b[j] == 2 || b[j] == 3) { ansa++; } } else if (a[i] == 1) { if (b[j] == 2 || b[j] == 4){ ansb++; } else if (b[j] == 3 || b[j] == 0) { ansa++; } } else if(a[i] == 2) { if (b[j] ==3 || b[j] == 0) { ansb++; }else if(b[j] == 4 || b[j] == 1) { ansa++; } } else if (a[i] == 3) { if (b[j] == 4 || b[j] == 2) { ansa++; }else if(b[j] == 0 || b[j] == 1) { ansb++; } } else if (a[i] == 4) { if (b[j] == 0 || b[j] == 1) { ansa++; } else if (b[j] == 2 || b[j] == 3) { ansb++; } } if (i == na - 1) { i = 0; }else { i++; } if(j == nb - 1) { j = 0; }else { j++; } /*cout << ' ' << ansa << ' ' << ansb << "\n";*/ } cout << ansa << ' ' << ansb << endl; return 0; } ```
by a13901280570 @ 2024-03-15 23:30:27


|