《算法竞赛入门经典2ndEdition 》习题3-1 得分(Score, Uva1585)

来源:互联网 发布:华为手机淘宝安装失败 编辑:程序博客网 时间:2024/05/16 12:33

不多说,很简单。

#include <cstdio>#include <cstring>const int maxn = 80;char s[maxn + 10];int main(){       int t;  scanf("%d", &t);  while(t--)  {    int ans = 0;    scanf("%s", s);    int len = strlen(s);    for(int i = 0; i < len; i++)      if(s[i] == 'O')      {        int cnt = 0;        while(s[i] == 'O')         {          ans += ++cnt;          i++;        }         }    printf("%d\n", ans);  }  return 0;}

网上看了个比我效率高的程序,有种类似dp的思想。
下面这个是原作者。
http://blog.csdn.net/mobius_strip/article/details/40598897

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;char str[81];int  score[81];int main(){    int n;    scanf("%d",&n);    while (n --) {        scanf("%s",str);        score[0] = (str[0] == 'O');        for (int i = 1 ; str[i] ; ++ i) {            score[i] = score[i-1]+1;            if (str[i] == 'X')                score[i] = 0;        }        int sum = 0;        for (int i = 0 ; str[i] ; ++ i)            sum += score[i];        printf("%d\n",sum);     }    return 0;}
1 0
原创粉丝点击