uva 1585

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int k;
    cin>>k;
    stack<int> score;
    int t=1;
    string s;
    while(k--)
    {
    t=1;
    cin>>s;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        if(s[i]==‘O‘)
            score.push(t++);
        if(s[i]==‘X‘)
        {
            t=1;
        }
    }
    int sum=0;
    while(!score.empty())
    {
        sum+=score.top();
        score.pop();
    }
    cout<<sum<<endl;
    }

}

  

时间: 2024-08-10 04:04:57

uva 1585的相关文章

UVa 1585 Score --- 水题

题目大意:给出一个由O和X组成的串(长度为1-80),统计得分. 每个O的分数为目前连续出现的O的个数,例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3 解题思路:用一个变量term记录当前O的分数,若出现O,则term+1,若出现X,则term=0: 再用一个sum记录总和,没次加上term即可 /* UVa 1585 Score --- 水题 */ #include <cstdio> #include <cstring> const int maxn =

UVA 1585 字符串处理

背景:小紫书上习题 学习:1.条件运算符?:: 的运用可以简化,高效代码.?的优先级大于=,小余算术和关系运算符.与多重赋值语句一样采用右结合.(用到了dp的思想) 代码: #include<stdio.h> #include<string.h> int main(void){ int num[80]; char str[81]; int t; scanf("%d",&t); while(t--){ int sum = 0; scanf("%s

UVa 1585 - Score

题目:给你一个X和O组成的串,每个O有一个分,为他前面连续的O个数+1,求所有O的分数和. 分析:dp,简单题.lis类似物,每个位记录连续的个数即可. 说明:快500了(⊙_⊙). #include <algorithm> #include <iostream> #include <cstdlib> #include <cstdio> using namespace std; char str[81]; int score[81]; int main()

得分(Score, ACM/ICPC Seoul 2005,UVa 1585)

#include<cstdio>#include<cstdlib>#include<cstring>int main(){ char s[80];//输入OOXXOXXOOO,最终得分计算为1+2+0+0+1+0+0+1+2+3=10 int m = 0, sum = 0, i = 0; scanf("%s", s); for (i = 0; i < strlen(s); i++) { if (s[i] == 'X') m = 0; if (s

UVa 1585 待解决

是在遇到第一个ooxx的时候会出错,会少算一个1 #include<stdio.h> int main() { int i,k=0,sum=0; char a[100]={"ooxxooxxooox"}; for(i=0;a[i]!='\0';i++) { if((a[i]=='o'&&a[i+1]=='x')||(a[i]=='o'&&a[i+1]=='\0')) { sum+=(1+i-k)*(i-k)/2; } if(a[i]=='x'

得分(Score,ACM/ICPC Seoul 2005,UVa 1585)

#include<stdio.h> int main(void) { char b; int t,cou,sum; scanf("%d",&t); getchar(); while(t--) { cou=sum=0; while((b=getchar())!='\n') { if(b=='O')sum+=++cou; else cou=0; } printf("%d\n",sum); } return 0; }

UVa 1585 Score(得分)

如何计算你们的得分呢?,如“OOXXOXXOOO”. “O”表示问题的正确答案,“X”表示错误的答案.那么它得分是由它自己和它刚刚以前连续的'O'只有当答案是正确的. 例如,第10个问题的分数是由其自身和它的两个先前连续的“0”获得的3. 因此,“OOXXOXXOOO”的得分是通过“1 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 3”计算的10.你要编写一个计算测试结果分数的程序.输入 输入第一行一个整数T,表示由T个测试用例组成. 每个测试用例以包含由'O'和'X'组成

算法竞赛入门经典第二版第三章习题

写这个的原因是看到一位大神的习题答案总结,于是自己心血来潮也想写一个这个,目的主要是督促自己刷题吧,毕竟自己太弱了. 习题3-1 得分 UVa 1585 大致就是设置一个变量记录到当前为止的连续的O的数量,碰到X就变0,水题. #include<stdio.h> #include<ctype.h> #include<string.h> char s[90]; int main(void) { int length,n,sum,num; scanf("%d&qu

苏州大学ICPC集训队新生赛第二场

A - Score UVA - 1585 水 #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; while(n--){ int sum=0; string s; cin>>s; int len=s.size(); int tmp=0; for(int i=0;i<len;i++){ if(s[i]=='O')sum+=tmp,tmp++; else { sum+=tmp;