首页 > 其他分享 >HJ42 学英语 递归解法

HJ42 学英语 递归解法

时间:2023-04-26 18:14:17浏览次数:35  
标签:10 递归 int t1 HJ42 tag append l1 解法

 1 #1271919
 2 d={1:'one',2:'two',3:'three',4:'four',5:'five',
 3    6:'six',7:'seven',8:'eight',9:'nine',10:'ten',
 4    11:'eleven',12:'twelve',13:'thirteen',14:'fourteen',15:'fifteen',
 5    16:'sixteen',17:'seventeen',18:'eighteen',19:'nineteen',20:'twenty',
 6    30:'thirty',40:'forty',50:'fifty',60:'sixty',70:'seventy',
 7    80:'eighty',90:'ninety',100:'hundred',
 8    1000:'thousand',1002:'billion',1001:'million','a':'and'}
 9 def three(t,tag=1000,l=[],l1=[],flag=1):
10     t1=t[-3:][::-1]
11     if len(t)>=3:
12         if int(t1[2])==0:
13             pass
14         else:
15             l.append(d[int(t1[2])])
16             l.append(d[100])
17             if int(t1[1])==0 and int(t1[0])==0:
18                 pass
19             else:
20                 l.append(d['a'])
21     if len(t)>=2:
22         if int(t1[1])==0:
23             pass
24         elif int(t1[1])!=0 and int(t1[0])==0:
25             l.append(d[int(t1[1])*10])
26             flag=0
27         elif int(t1[1])==1:
28             l.append(d[int(t1[1])*10+int(t1[0])])
29             flag=0
30         else:
31             l.append(d[int(t1[1])*10])
32     if flag==1:
33         if int(t1[0])==0:
34             pass
35         else:
36             l.append(d[int(t1[0])])
37     l1=l.copy()+l1
38     #print("l1",l1)
39     if t[:-3]=='':
40         return l1
41     while t[:-3]!='':
42         l1.insert(0,d[tag])
43         tag+=1
44         t=t[:-3]
45         #print("tag",tag)
46         return three(t,l=[],tag=tag,l1=l1)
47 
48 n=input()
49 l1=three(n)
50 print(" ".join(i for i in l1))

 

标签:10,递归,int,t1,HJ42,tag,append,l1,解法
From: https://www.cnblogs.com/tanyuanqing/p/17356891.html

相关文章

  • 关于oracel 递归语法start with connect by 和 left join 一起使用的一个bug
    左表为树状结构机构表A,右表为人员表(有机构ID字段)BSELECTA.*,B.*FROMALEFTJOINBONA.ORG_ID=B.ORG_IDSTARTWITHA.ORG_ID='011000000004'CONNECTBYPRIORA.ORG_ID=A.P_ORG_ID查询结果出现,B表中的1条记录,最后重复出现。(最终的结果可能为:对A和B......
  • 对递归的理解
      二叉树中的遍历以及线索二叉树的创建对递归的使用非常频繁,递归对我来说也一直是模糊不清的概念。  故写下此篇文章帮助理解递归。一.递归的定义  "一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新......
  • 二叉树的遍历(递归算法)
    //二叉树的遍历(递归算法)#include<stdio.h>#include<malloc.h>typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;//存储二叉树的左孩子和右孩子}BiTNode,*BiTree;voidInitTree(BiTree&root){root=(BiTNode*)malloc(sizeof(BiTNo......
  • php递归遍历文件目录
    美日汇:www.hnzyxok.com手机端:www.hnzyxok.com/i递归遍历文件目录(大体的思路就是:传入一个文件名后输出遍历所有内容,等发现文件还是个文件夹的时候接着递归调用当前的遍历方法,如果不是文件夹就输出文件名)functiondakai($mulu){$mydir=dir($mulu);echo"<ul>\n";while($file......
  • 三大类算法:递归、排序、二分查找
    一、递归”递“+”归“。这两个意思,正是递归思想的精华所在,去的过程叫做递,回来的过程叫做归,在编程语言中对递归可以简单理解为:方法自己调用自己,只不过每次调用时参数不同而已。满足递归的条件:1、递归表达是(规律)如果一个问题的解能够拆分成多个子问题的解,拆分之后,子问题和该问题在求......
  • 从暴力递归到动态规划
    ///<summary>///机器人不停尝试///</summary>///<paramname="start">开始位置</param>///<paramname="aim">要到的位置</param>///<paramname="n">总的数</param>//......
  • Java中递归的简单应用
    递归是一种非常常见的编程技巧,它可以将一个复杂的问题分解成更小的问题,然后递归地解决这些小问题,最终得到整个问题的解。递归的本质就是函数调用自身。我们来看一个简单的例子:计算阶乘。阶乘是指将一个数和它以及它之前的所有正整数相乘的结果,通常用符号"!"表示。例如,5的阶乘就是......
  • 递推与递归和DFS深度优先搜索
    递推与递归和DFS深度优先搜索跳台阶递归实现指数级枚举递归实现排列型枚举递归实现组合型枚举P1036选数习题课递推/递归/DFSP2089烤鸡指数P1088火星人全排列P1149火柴棒等式指数+预处理P2036PERKET指数P1135奇怪的电梯暴力迷宫问题P1683入门P1605......
  • 使用递归完成RBAC
     先使用ling查询将每个角色下的权限进行查询其次调用并返回这个GetFor方法,第一个参数是当前角色下的权限,第二个是权限的父ID顶级为0,GetFor方法是查询当前list集合用Printid作为条件,然后返回类型是一对多的样式所以创建dto进行赋值,然后那个集合需要反复调用这个方法来查询这......
  • js递归查询id所对应的节点,查询该节点的父节点,查询该节点的所有子节点
    在工作项目中经常遇到树形结构的数据,而往往我们需要用递归来实现,下面就给大家列举常用的递归操作。   lettreeList=[{id:'1',name:'父一',children:[{id:'1-1',......