您的位置:首页 > 产品设计 > UI/UE

杭电ACM 2734: Quicksum

2015-04-29 21:24 302 查看
原创作品 转载请注明出处/article/10717360.html



这一道题目不是很难,主要意思就是将输入字符串中的每个字符在字符串中的位置乘以该字符在字母表中的位置结果进行累加。主要体现在如何表达一个字符在字母表中的位置。很简单,我的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的容器介绍,可以看我的博文/article/10717331.html,不感兴趣的可以不用尝试,写出的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: