UVa 486 - English-Number Translator
来源:互联网 发布:iphone接电话录音软件 编辑:程序博客网 时间:2024/05/17 02:06
题目:给你一个数字的英文写法,翻译成阿拉伯数字(没有and)。
分析:模拟,递归。这个可以用很多方法求解吧。
这里利用递归,将数字分成几个部分的和(只考虑百万,千,万),分别求解相加即可。
说明:(⊙_⊙)。
#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;char buf[20][10];char number[32][10] = {"negative", "zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred", "thousand", "million"}; int value[32] = {-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,100,1000,1000000};int find(char *str){for (int i = 1 ; i < 29 ; ++ i)if (!strcmp(str, number[i]))return value[i];return -1;}int dfs(int a, int b){if (a > b) return 0;if (a == b) return find(buf[a]);else {int million = 0,thousand = 0,hundred = 0,sum = 0;for (int i = a ; i <= b ; ++ i) {if (!strcmp(buf[i], "million")) million = i;if (!strcmp(buf[i], "thousand")) thousand = i;if (!strcmp(buf[i], "hundred")) hundred = i;sum += find(buf[i]);}if (million) return dfs(a, million-1)*1000000+dfs(million+1, b);if (thousand) return dfs(a, thousand-1)*1000+dfs(thousand+1, b);if (hundred) return dfs(a, hundred-1)*100+dfs(hundred+1, b);return sum;}}int main(){int count = 0;while (scanf("%s",buf[count ++]) != EOF) {while (getchar() != '\n')scanf("%s",buf[count ++]);if (!strcmp(buf[0], "negative"))printf("-%d\n",dfs(1, count-1));else printf("%d\n",dfs(0, count-1));count = 0;} return 0;}
0 0
- UVa 486 - English-Number Translator
- UVa486 - English-Number Translator
- poj 2121 English-Number Translator
- POJ 2121 English-Number Translator (散列)
- POJ2121 Inglish-Number Translator
- B - Inglish-Number Translator
- Inglish-Number Translator
- poj 2121-Inglish-Number Translator
- ZOJ2311 POJ2121 Inglish-Number Translator
- poj 2121.Inglish-Number Translator
- poj 2121 Inglish-Number Translator
- POJ 2121 Inglish-Number Translator
- POJ 2121 Inglish-Number Translator
- poj 2121 Inglish-Number Translator
- poj 2121——Inglish-Number Translator
- poj 2121 Inglish-Number Translator(模拟)
- POJ-2121 Inglish-Number Translator-数字英译汉
- POJ2121——Inglish-Number Translator
- 第14周项目6-9-递归反转数组
- LaTex 入门2
- ifive air刷OMA固件教程
- python简单的爬虫代码
- 浏览器中打开servlet路径问题
- UVa 486 - English-Number Translator
- Unity3d 屏幕特效实现类似死亡之后的全屏黑白效果
- Java基础语法
- js 注册页面的一些检验(身份证,手机号码,固定电话等等)
- Android Contextual Menus之二:contextual action mode
- Hibernate介绍及入门级应用开发
- 自我认识
- Linux 路由 学习笔记 之十一 输入、输出路由查找相关的接口函数
- JSP Cookie 使用讲解