栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1588 Reverse Roman Notation

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1588 Reverse Roman Notation

#include<cstdio>#include<cstring>using namespace std;char s[8]="IVXLCDM";int b[7]={1,5,10,50,100,500,1000};int ToDec(char *str){    int n,k,i,j,c[33];    n=(int)strlen(str);    for(i=0;i<n;i++)        for(j=0;j<7;j++) if(str[i]==s[j]) {     c[i]=b[j];     break; }    c[n]=0;    for(i=k=0;i<n;i++)        if(c[i+1]>c[i]) k-=c[i];        else k+=c[i];    return k;}void ToRoman(int k,char *str){    int i,j,m;    for(i=6,j=0;i>=0;i--)    {        while(k>=b[i]) str[j++]=s[i],k-=b[i];        if(!k) break;        if(i&1) m=i-1;        else m=i-2;        if(k>=b[i]-b[m])        { k-=b[i]-b[m]; str[j++]=s[m]; str[j++]=s[i];        }    }    str[j]='';}int main(){    char str[33];    int k,i,j,stk[1111];    for(i=j=0;scanf("%s",str)+1;)    {        if(str[0]=='=')        { if(!i) {     puts("stack underflow");     continue; } if(stk[i-1]<=0||stk[i-1]>4999)     puts("out of range exception"); else     ToRoman(stk[i-1],str),puts(str);        }        else if(str[0]=='+'||str[0]=='-'||str[0]=='*'||str[0]=='/')        {     if(i<2) {     puts("stack underflow");     continue; } if(str[0]=='+')     stk[i-2]=stk[i-1]+stk[i-2]; else if(str[0]=='-')     stk[i-2]=stk[i-2]-stk[i-1]; else if(str[0]=='*')     stk[i-2]=stk[i-1]*stk[i-2]; else {     if(!stk[i-1])         puts("division by zero exception");     else         stk[i-2]=stk[i-2]/stk[i-1]; } i--;        }        else stk[i++]=ToDec(str);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376567.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号