UVa 1585 Score / 1586 Molar Mass(遍历+计数)
2017-04-11 19:50
337 查看
UVa 1585 Score
原题地址
https://vjudge.net/problem/UVA-1585题意:给定由O和X组成的串,统计得分。每个O的得分为目前连续出现的O的个数,X得分为0,如OOXXOXXOOO=1+2+0+0+1+0+0+1+2+3=10。
解题思路
本题是《算法竞赛入门经典》的习题3-1,大水题。遍历输入字符串,用seq记录目前连续出现的O的个数,seq=0代表没有遇到O。遇到O则按照规则累加,遇到新的X则重置seq。
AC代码
#include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; int main() { int kase; char str[100]; scanf("%d", &kase); while(kase--) { scanf("%s", str); int seq = 0, sum = 0; for (int i = 0; i<strlen(str); ++i) { if (str[i] == 'O') { sum += seq+1; //每次加之前的连续O个数和自己 seq++; //更新连续O数 } else if (str[i] == 'X' && seq) //刚遇到X seq = 0; } printf("%d\n", sum); } return 0; }
UVa 1586 Molar Mass
原题地址
https://vjudge.net/problem/UVA-1586题意:求只含C/H/O/N四种元素的分子的摩尔质量。
解题思路
本题是《算法竞赛入门经典》的习题3-2,大水题。遍历字符串,分为以下几种情况:
遍历到元素,用pre字符记录这个元素,同时记这个元素出现次数preCount为1(因为有可能后缀数字不出现)。
遍历到数字,取出这整个数字,记录到preCount里。
每次遍历到新的字母都将前一个元素的分子量累加到sum里。可以与1合并。
最后记得累加最后一个元素的分子量。
AC代码
#include <stdio.h> #include <string.h> #include <cctype> #include <map> using namespace std; int main() { map<char, double> chem; chem['C'] = 12.01; chem['H'] = 1.008; chem['O'] = 16.00; chem['N'] = 14.01; chem['#'] = 0.00; int T; char str[100]; scanf("%d", &T); while(T--) { scanf("%s", str); double sum = 0; int i = 0, preCount = 0; char pre = '#'; //起始符 while (i < strlen(str)) { if (isalpha(str[i])) //遇到新的字母 { if(pre != '#') //将之前的摩尔质量累加 sum += chem[pre] * preCount; pre = str[i]; //记录该字母 preCount = 1; //该字母出现至少一次 } if (isdigit(str[i])) //遇到字母后的数字 { //取出这个数字 preCount = str[i] - '0'; while (isdigit(str[i+1])) { preCount *= 10; preCount += str[++i]-'0'; } } ++i; } sum += chem[pre] * preCount; printf("%.3f\n", sum); } return 0; }
相关文章推荐
- uva 1586 Molar mass
- UVa 1586:Molar mass
- uva1586----Molar mass
- 算法竞赛入门经典 第三章 uVa1586 - Molar mass
- UVa 1586 Molar mass
- uva 1586 - Molar mass
- UVa 1586 Molar Mass(分子量)
- UVa1586 Molar mass
- UVA 1586 ----Molar mass
- UVA 1586 Molar mass(蛋白质的相对分子质量)
- (uva)1586 Molar mass
- UVa1586 Molar Mass
- [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225
- UVa 1586 - Molar mass
- UVa 1586 - Molar mass
- UVA 1586 ----Molar mass
- UVA - 1586 Molar mass
- Uva1586-Molar Mass-分子量
- UVa1586 - Molar mass
- 【习题 3-2 UVA - 1586】Molar mass