题目1
每个字符 1 的价值为 a1,每个字符 2 的价值为 a2,每个字符 3 的价值为 a3,每个字符 4 的价值为 a4。
一个字符串的价值等于其所包含的所有字符的价值之和。
给定一个由字符 1、2、3、4 构成的字符串 S,请你计算它的价值。
输入格式
第一行包含四个整数 a1,a2,a3,a4。
第二行包含一个字符串 S。
输出格式
一个整数,表示字符串 S 的价值。
数据范围
前三个测试点满足 0≤a1,a2,a3,a4≤5,1≤|S|≤10。
所有测试点满足 0≤a1,a2,a3,a4≤104,1≤|S|≤105。
输入样例1:
1 2 3 4
123214
输出样例1:
13
输入样例2:
1 5 3 2
11221
输出样例2:
13
思路:
本题的难度一般,看下面的代码即可。但重要的是要掌握 auto关键字的用法【for(auto c:S)】
具体代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a[4];
//输入a1~a4的价值
for(int i = 0; i < 4; i++)
{
cin >> a[i];
}
int num = 0;
string S;
cin >> S;
//auto 介绍 在底部
for(auto &c: S) // 此处相当于for(string::iterator c = S.begin(); c != S.end; c++) 即遍历string内的每个字符
{
num += a[c-'1']; //因为 c 中只有 1,2,3,4 而数组a[] 为a[0]~a[3];经过该计算即可一一对应。
}
/*
!!!!!!
[]内的 '1' 必须带 '' 否则会报错,至于原因我觉得应该是 c 是auto关键字的原因
auto 是根据后面的 值来推测这个变量的类型的
*/
cout << num << endl;
return 0;
}
auto详细介绍:
----------------------------
C++ auto关键字 总结_菜鸟玩家进行时的博客-CSDN博客
---------------------------
本篇博客到此结束~