score——3354
2015-06-19 19:50 HaodongGUO 阅读(150) 评论(0) 编辑 收藏 举报#include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> using namespace std; int main() { int n,i,j,sum=0; char s[81]; scanf("%d%*c",&n); while(n--) { sum=0; gets(s); for(i=0;s[i]!='\0';i++) { //cout<<sum<<endl; if(s[i]=='O') { sum += 1; j=i; while(j-1>=0&&s[j-1]!='X') { sum+=1; j--; } } } cout<<sum<<endl; } return 0; }
据说是动归题,所以用数组保存中间结果,结果题解有种不伦不类的感觉
贴上题解
#include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> using namespace std; int main() { int n,i,sh,j; char s[81];int f[81]; scanf("%d%*c",&n); while(n--) { memset(f,0,sizeof(f)); gets(s); sh=0; for(i=0;s[i]!='\0';i++) { if(s[i]=='O') { if(i==0) { f[0]=1; }else{f[i]= 1+f[i-1];} } if(s[i]=='X') { if(i==0) {f[0]=0;} else {f[i]=f[i-1];} } } for(j=0;j<i;j++)sh+=f[j]; cout<<sh<<endl; } return 0; }
当然此代码仍然并没有提交