1 条题解
-
2
这道题难理解的地方应该是:怎么按照输入的字母来输出对应的数字?
如果你分别处理
ABC
、ACB
、BAC
、BCA
、CAB
、CBA
这六种情况,会很麻烦。我的做法是,首先使用数组存储数字,因为 C++ 标准库不支持「输入一个变量名,输出这个变量的值」这种反射操作,现在只有 3 个值你还能写几个 if + 手动排序,数据量不确定地多的时候就不行了。
ASCII 码中大写字母和小写字母分别都是连续的,
'A'
的十进制值为 ,因此只要减去'A'
就可以访问 0、1、2 了,将这个表达式作为输出时的数组下标即可。手动 getchar() 一个个获取字符可能会遇到输入数据中空格数不确定导致的问题,还得特判空格,因此直接使用了 string,它是可以像字符数组一样用下标访问的,你也可以使用字符数组。
#include <bits/stdc++.h> using namespace std; int main() { int a[3]; cin >> a[0] >> a[1] >> a[2]; sort(a, a+3); string s; cin >> s; for(int i = 0; i < 3; i++) { cout << a[s[i]-'A'] << ' '; } return 0; }
- 1
信息
- ID
- 3345
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 1
- 标签
- 递交数
- 12
- 已通过
- 9
- 上传者