代码改变世界

score——3354

2015-06-19 19:50  HaodongGUO  阅读(148)  评论(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;
    }

  当然此代码仍然并没有提交