思路: map<string, int>即可
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
using namespace std;
#define mst(a,b) memset(a,b,sizeof(a))
#define REP(a,b,c) for(int a = b; a < c; ++a)
#define eps 10e-8
const int MAX_ = 1000010;
const int N = 500000;
const int INF = 0x7fffffff;
char str[MAX_];
int hash[MAX_];
int a[MAX_];
map<string, int> mp;
int main(){
int T, n, m, numa = 0, numb = 0;
bool flag = 0;
string s;
//scanf("%d", &T);
mp["one"] = 1;
mp["two"] = 2;
mp["three"] = 3;
mp["four"] = 4;
mp["five"] = 5;
mp["six"] = 6;
mp["seven"] = 7;
mp["eight"] = 8;
mp["nine"] = 9;
while(cin>>s){
if(s[0] == '='){
if(numa == 0 && numb == 0)break;
printf("%d\n", numa + numb);
flag = 0;
numa = numb= 0;
}
if(s[0] == '+'){
flag = 1;
continue;
}
if(!flag){
numa = numa*10 + mp[s];
}
else {
numb = numb* 10 + mp[s];
}
}
return 0;
}