杭电ACM 2734: Quicksum

本文详细介绍了如何通过遍历输入字符串,计算每个字符在字符串中的位置与它在字母表中的位置的乘积,并将这些乘积进行累加。文中提供了两种方法来实现这一算法,一种使用基本的循环操作,另一种则利用了C++的map容器来简化计算过程。

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

原创作品 转载请注明出处http://blog.youkuaiyun.com/always2015/article/details/45371891

这里写图片描述

这一道题目不是很难,主要意思就是将输入字符串中的每个字符在字符串中的位置乘以该字符在字母表中的位置结果进行累加。主要体现在如何表达一个字符在字母表中的位置。很简单,我的AC代码如下:

#include <iostream>
#include<string>
#include<map>
using namespace std;

int main(void)
{
    int length,total_sum=0;
    string input_str;

    while(getline(cin,input_str)&&input_str!="#")
    {
        //获取字符串长度
        length=input_str.size();
        //对字符串中各字符所在字符串中的第几位乘以他在字母表的值进行累加
        for(int i=0; i<length; i++)
        {
            if(input_str[i]!=' ')//空字符乘积为零,不累加也行
            total_sum+=(i+1)*(input_str[i]-'A'+1);//input_str[i]-'A'+表示在字母表的位置
        }
        cout <<total_sum << endl;
        //重清零
        total_sum=0;
    }
    return 0;
}

其实我还用了另一种方法,就是用容器map来体现字母在字母表的位置,不过这是比上面的方法繁琐,但也是可行的,在这里只是想对容器map练练手而已,有关map的容器介绍,可以看我的博文http://blog.youkuaiyun.com/always2015/article/details/44980187,不感兴趣的可以不用尝试,写出的AC代码如下:

#include <iostream>
#include<string>
#include<map>
using namespace std;

int main(void)
{
    int length,total_sum=0;
    string input_str;
    //定义一个map型容器,里面存储26个字母和以及在各自所对应的值(即字母表的顺序)
    map <char,size_t> word_count;
    for(int i=0; i<26; i++)
    {
        word_count['A'+i]=i+1;
    }
    //空字符代表的值为0
    word_count[' ']=0;
    //获取一个输入的字符串,当输入”#“时,退出
    while(getline(cin,input_str)&&input_str!="#")
    {
        //获取字符串长度
        length=input_str.size();
        //对字符串中各字符所在字符串中的第几位乘以他在字母表的值进行累加
        for(int i=0; i<length; i++)
        {
            total_sum+=(i+1)*word_count[input_str[i]];
        }
        cout <<total_sum << endl;
        //重清零
        total_sum=0;
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值