题目链接
问题分析:
直接用string匹配可能慢一点;海岛Blog用了map<string, int>
比较快一点;
程序说明:
每个字符串 边输入边转换、存储,’+’ 分离, ‘=’ 暂停输入,计算结果!
AC程序:
/**************************
//@Author: 3stone
//@ACM: HDU-1228
//@Time: 18/6/4
//@IDE: VSCode2018
***************************/
#include<cstdio>
#include<string>
#include<iostream>
#include<map>
using namespace std;
//枚举类型
string num_in_eng[20] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int get_value(string key) {
for (int i = 0; i < 10; i++)
if (key == num_in_eng[i])
return i;
return -1;
}
int main() {
string cur;
while((cin >> cur)) {
int num1 = 0, num2 = 0, flag = 1, val;
while(cur != "=") {
if (cur == "+")
flag = 2;
else{
val = get_value(cur);
//printf("value: %d\n", val);
if (flag == 1)
num1 = num1 * 10 + val;
else
num2 = num2 * 10 + val;
}
cin >> cur;
}
if(num1 == 0 && num2 == 0)
break;
else
cout << num1 + num2 << endl;
}
system("pause");
return 0;
}