为什么错了呢?~~呜呜呜~~

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

希望更丰富的展现?使用Markdown
by Doveqise @ 2019-05-26 19:28:04


编译过了吗
by Stephen_Curry @ 2019-05-26 19:35:23


希望更丰富的展现?[使用Markdown](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by zrzluck99 @ 2019-05-26 19:36:45


本蒟蒻的代码是用switch和case做的,代码可读性较差,仅供参考 ``` #include <iostream> using namespace std; int main() { int n,na,nb,a=0,b=0,c[201],d[201],e=0,f=0; cin>>n>>na>>nb; for(int i=1;i<=na;i++) cin>>c[i]; for(int i=1;i<=nb;i++) cin>>d[i]; for(int i=1;i<=n;i++) { e=e%na+1; f=f%nb+1; switch(c[e]) { case 0: { switch(d[f]) { case 1: { b++; break; } case 2: { a++; break; } case 3: { a++; break; } case 4: { b++; break; } }; break; } case 1: { switch(d[f]) { case 0: { a++; break; } case 2: { b++; break; } case 3: { a++; break; } case 4: { b++; break; } }; break; } case 2: { switch(d[f]) { case 0: { b++; break; } case 1: { a++; break; } case 3: { b++; break; } case 4: { a++; break; } }; break; } case 3: { switch(d[f]) { case 0: { b++; break; } case 1: { b++; break; } case 2: { a++; break; } case 4: { a++; break; } }; break; } case 4: { switch(d[f]) { case 0: { a++; break; } case 1: { a++; break; } case 2: { b++; break; } case 3: { b++; break; } }; break; } } } cout<<a<<" "<<b<<endl; return 0; } ```
by Stephen_Curry @ 2019-05-26 19:37:19


也可以用一个二维数组来解决,那样代码就简洁很多: ``` #include <iostream> using namespace std; int main() { int n, na, nb, a[201], b[201], as, bs; cin >> n >> na >> nb; int score[5][5] = { { 0, 0, 1, 1, 0 }, { 1, 0, 0, 1, 0 }, { 0, 1, 0, 0, 1 }, { 0, 0, 1, 0, 1 }, { 1, 1, 0, 0, 0 } }; for (int i = 0; i < na; i++) cin >> a[i]; for (int i = 0; i < nb; i++) cin >> b[i]; for (int i = 0; i < n; i++) { as += score[a[i%na]][b[i%nb]]; bs += score[b[i%nb]][a[i%na]]; } cout << as << " " << bs << endl; return 0; } ```
by Stephen_Curry @ 2019-05-26 19:47:13


楼主这样的代码真的~~好丑~~
by Orzalpha @ 2019-05-26 20:02:46


过了。~~谢谢大佬~~
by 独孤枭燕 @ 2019-06-02 17:05:47


|