one + two = three four + five six = zero seven + eight nine = zero + zero =
3 90 96
#include <iostream> #include <string> using namespace std; int Letter(string L) { if (L=="zero") { return 0; } if (L=="one") { return 1; } if (L=="three") { return 3; } if (L=="two") { return 2; } if (L=="four") { return 4; } if (L=="five") { return 5; } if (L=="six") { return 6; } if (L=="seven") { return 7; } if (L=="eight") { return 8; } if (L=="nine") { return 9; } else return -1; } int main() { int i=0,j=0; int num1=0,num2=0; string str[100]; while (cin>>str[i]) { num1=0;num2=0; if (str[i]!="=") { i++; //本题的关键点之一就是将单词分别存在数组中。 continue; } while (str[j]!="+") { num1=num1*10+Letter(str[j]); //这里是一个关键方法。刚开始做的时候就想着怎么去把十位和各位的数字分开,后来参考ac大牛写的代码以后才知道。除了这个方法以外,还可以用空格来区分数字。 j++; // break; } while (++j<i) { num2=num2*10+Letter(str[j]); //j++; //break; } i=0; j=0; if(num1 == 0 && num2 == 0) //同时为零时推出 break; cout<<num1+num2<<endl; } return 1; } /************************************************************** Problem: 1010 User: Carvin Language: C++ Result: Accepted Time:10 ms Memory:1520 kb ****************************************************************/
原文:http://blog.csdn.net/carvin_zh/article/details/44622389