---得分

本文介绍了如何通过C++实现一个简单的算法,计算给定字符串中O字符连续出现的得分,每个O的得分是其连续出现的次数。通过两次遍历字符串,分别统计O字符数量和计数,最后计算总分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/***********************************************
                                    得分
给出一个由 O 和 X 组成的串(长度为1~80),统计每个字符的得分之和,每个 O 的得分为已经连续出现的
 O 的个数,X 的的得分为 0 。例如,OOXXOXXOOO 的得分为 1+2+0+0+1+0+0+1+2+3=10.
***********************************************/

尝试

(并不难。。。)

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	char a[50];
	cin.getline(a,50);
	int ans=0,i=0;
	while(i<strlen(a)){//遍历整个字符串 
		int num=0;
		while(a[i]=='O') {
			num++;i++;
		}
		ans+=(num+1)*num/2;//得到个数直接计算总分 
		i++;
	}
	cout<<"分数为:"<<ans;
	return 0; 
} 

赏析参考答案

//参考答案 
#include<iostream>
#include<cstring>
using namespace std;
int main(){
	int T;//记录输入个数 
	char buf[128];
	scanf("%d\n",&T);
	int sum=0; 
	while(T--){
		gets(buf);//一次输入一个元素 
		int cnt=0,sz=strlen(buf);
		for(int i=0;i<sz;i++){
			if(buf[i]=='O') sum+=(++cnt);
			else cnt=0;
		}
		printf("%d\n",sum);
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值