2 solutions
-
4
题意
输入多行字符串,将它们合并成一行看。
W
代表赢场,L
代表输场,E
代表结束输入分别输出 11 分制和 21 分制的输赢场
思路
先把所有字符串合成一个
再分别计算 11 分制和 21 分制
计算场数期间:如果总场数大于等于 11/21 场,且输赢场相差大于等于 2 场,那么这场比赛结束,开始下一场比赛
代码
#include <bits/stdc++.h> using namespace std; int a[62530],w,l; // 62525 是 25 * 2501 的结果,w 代表赢场,l 代表输场 int main(int argc, char **argv){ for (int i = 0;;i++){ char c; cin >> c; if (c != 'E'){ // 输入没结束 if (c == 'W') a[i] = 1; // 赢场 else a[i] = 2; // 输场 }else break; } // 11 分制 for (int i = 0;a[i] != 0;i++){ if (a[i] == 1) w++; // 赢场 else l++; // 输场 if (abs(w - l) >= 2 && (w >= 11 || l >= 11)){ // 场数间隔大于 2 且总场数大于等于 11 场 printf("%d:%d\n",w,l); w = 0,l = 0; } } printf("%d:%d\n\n",w,l); // 21 分制 w = 0,l = 0; for (int i = 0;a[i] != 0;i++){ if (a[i] == 1) w++; else l++; if (abs(w - l) >= 2 && (w >= 21 || l >= 21)){ printf("%d:%d\n",w,l); w = 0,l = 0; } } printf("%d:%d",w,l); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; char ppp[65000]; int main(){ for(int i=0;;i++){ cin>>ppp[i]; if(ppp[i]=='E')break; } int w=0,l=0; for (int i=0;ppp[i]!='E';i++){ if(ppp[i]=='W')w++; else l++; if(abs(w-l)>=2&&(w>=11||l>=11)){ printf("%d:%d\n",w,l); w=0,l=0; } } printf("%d:%d\n\n",w,l); w=0,l=0; for (int i=0;ppp[i]!='E';i++){ if(ppp[i]=='W')w++; else l++; if(abs(w-l)>=2&&(w>=21||l>=21)){ printf("%d:%d\n",w,l); w=0,l=0; } } printf("%d:%d",w,l); return 0; }
- 1
Information
- ID
- 979
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 6
- Tags
- # Submissions
- 81
- Accepted
- 24
- Uploaded By