求剧情
算法的乐趣 · 第十五节

《算法的乐趣》第十五节

本节首先补充了中文数字转换的实现细节:SectionToChinese()函数通过中文数字表和权位表将数字转为中文,其中0的处理是关键——小节末尾的0不转换……

本节首先补充了中文数字转换的实现细节:SectionToChinese()函数通过中文数字表和权位表将数字转为中文,其中0的处理是关键——小节末尾的0不转换,数字之间的多个0只转一个"零"。接着介绍了中文大写数字,即用笔画复杂的汉字(如"壹贰叁")代替简单数字以防篡改,明代郭桓案后正式用于官方记账,转换算法与普通中文数字相同。

随后讲解中文数字转阿拉伯数字的方法:阿拉伯数字的权位隐含在位置中,转换时逐个识别中文数字与权位的组合,将权位换算为10的倍数后求和。"零"没有权位可直接跳过,节权位(如"万")则是整个小节的倍数,需先保存小节值再累加。ChineseToNumber()函数实现此算法,通过查表完成中文数字与权位的转换。

最后简述了中文数字的地域差异及测试用例,并以"三个水桶等分8升水"的经典问题开启新章:用3升、5升、8升三个无刻度水桶,将8升水等分为两份4升,已知至少有两种解法(分别需7次和8次倒水),本章将用穷举法找出全部答案。

‹ 上一章目录下一章 ›

全部 76 章