杭电ACM 2734: Quicksum
2015-04-29 21:24
302 查看
原创作品 转载请注明出处/article/10717360.html
这一道题目不是很难,主要意思就是将输入字符串中的每个字符在字符串中的位置乘以该字符在字母表中的位置结果进行累加。主要体现在如何表达一个字符在字母表中的位置。很简单,我的AC代码如下:
其实我还用了另一种方法,就是用容器map来体现字母在字母表的位置,不过这是比上面的方法繁琐,但也是可行的,在这里只是想对容器map练练手而已,有关map的容器介绍,可以看我的博文/article/10717331.html,不感兴趣的可以不用尝试,写出的AC代码如下:
这一道题目不是很难,主要意思就是将输入字符串中的每个字符在字符串中的位置乘以该字符在字母表中的位置结果进行累加。主要体现在如何表达一个字符在字母表中的位置。很简单,我的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; }
相关文章推荐
- 杭电 acm 2734 Quicksum
- 杭电2734QuickSum
- 杭电ACM第1001题(C语言版)答案——Sum Problem
- 杭电acm 1018 Big Number
- 杭电acm 1019 Least Common Multiple
- 杭电acm 2025 查找最大元素
- 杭电acm 4282 A very hard mathematic problem
- 杭电acm 1021 Fibonacci Again
- 杭电_ACM_Hat's Fibonacci
- 杭电acm--2040
- 杭电_ACM_Buy the Ticket
- 杭电acm阶段之理工大版--第一阶段开始入门解题代码(1)
- 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
- 杭电ACM 1002 A + B Problem II
- 杭电acm--2027
- 杭电acm--2039
- 杭电acm--2036
- 杭电ACM——2010
- 杭电ACM-The area
- 杭电 ACM 1.3.2