http://acm.hdu.edu.cn/showproblem.php?pid=2539
无聊题,可能会有人名开头小写的数据,所以一定要倒着找no,我这种写法是中间出了点故障,导致写的很麻烦,不足取
View Code
#include <iostream> #include <string> using namespace std ; int main() { int n; while(scanf("%d%*c",&n),n) { int flag1[10],flag2[10]; char str[101]; int ans1=0,ans2=0; int p=0; int cnt1=0,cnt2=0; for(int i=1;i<=n;i++) { gets(str); int len=strlen(str); for(int j=1;j<len;j++) { if(str[len-5]==' '&&str[len-6]=='o'&&str[len-7]=='n'&&str[len-8]==' ') { if(p) flag2[cnt2++]=0; else flag1[cnt1++]=0; p^=1; break; } else { if(p) { ans2++; flag2[cnt2++]=1; } else { ans1++; flag1[cnt1++]=1; } p^=1; break; } } } int f=0; if(n&1){ f=1; n++; } for(int i=1;i<=(n>>1);i++) printf("%d ",i); printf("Score\n"); for(int i=0;i<(n>>1);i++) { if(flag1[i]) printf("O "); else printf("X "); } printf("%d\n",ans1); if(f) { for(int i=0;i<(n>>1)-1;i++) { if(flag2[i]) printf("O "); else printf("X "); } printf("- "); printf("%d\n",ans2); } else { for(int i=0;i<(n>>1);i++) { if(flag2[i]) printf("O "); else printf("X "); } printf("%d\n",ans2); } } return 0; }