| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
简单的栈操作 zero可以直接忽略#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<stack>
using namespace std;
int main()
{
map<string,int> value;
stack<long> fstk;
value["one"]=1;
value["two"]=2;
value["three"]=3;
value["four"]=4;
value["five"]=5;
value["six"]=6;
value["seven"]=7;
value["eight"]=8;
value["nine"]=9;
value["ten"]=10;
value["eleven"]=11;
value["twelve"]=12;
value["thirteen"]=13;
value["fourteen"]=14;
value["fifteen"]=15;
value["sixteen"]=16;
value["seventeen"]=17;
value["eighteen"]=18;
value["nineteen"]=19;
value["twenty"]=20;
value["thirty"]=30;
value["forty"]=40;
value["fifty"]=50;
value["sixty"]=60;
value["seventy"]=70;
value["eighty"]=80;
value["ninety"]=90;
value["hundred"]=100;
value["thousand"]=1000;
value["million"]=1000000;
vector<string> v;
while(true)
{
bool neg=false;
string ss;
getline(cin,ss);
if(ss.empty())
break;
char* p=const_cast<char*>(ss.c_str());
v.push_back(strtok(p," "));
char* temp;
while(temp=strtok(NULL," "))
{
if(temp!="zero")
v.push_back(temp);
}
int start=0,end=v.size();
if(v[0]=="negative")
{
neg=true;
start=1;
}
long res=0;
while(start!=end)
{
if(fstk.empty()||fstk.top()>value[v[start]])
{
fstk.push(value[v[start]]);
}
else
{
long tv=0;
while(!fstk.empty()&&fstk.top()<value[v[start]])
{
tv=tv+fstk.top();
fstk.pop();
}
fstk.push(tv*value[v[start]]);
}
start++;
}
while(!fstk.empty())
{
res+=fstk.top();
fstk.pop();
}
if(neg)
res=res-2*res;
cout<<res<<endl;
v.clear();
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator