昨天笔试VIPKID有一道关于整数拆分的题目,要求输出拆分后的序列,当时没有做出来,记录一下可以实现的想法:

题目示例:

从键盘读入一个数 n, 输出所有和为 n 的子序列和,包括 n

测试用例:

输入 5

输出:

1 + 1 + 1 + 1 + 1

1 + 1 + 1 + 2

1 + 1 + 3

1 + 2 + 2

1 + 4

2 + 3

5

解题思路:首先这类需要不断分解的题目,首先想到的是递归法,也就是说将一个大数不断的分解为小数,然后将每一个分解的子数保存在一个 list 中,退出条件为当 n 的值减为 0,然后输出 list 中的值。

def resolve(n, minFlag):

global resCnt

global resList

global p

if n == 0:

resCnt += 1

for i in range(p):

print(resList[i], end="")

if i == p-1: # 当输出到最后一个数字时,不输出 '+'

continue

else:

print("+", end="")

print("")# 输出list中的值以后,换行

for i in range(minFlag, n+1):

resList[p] = i

p += 1

resolve(n-i, i)

p -= 1

if __name__ == '__main__':

# n = int(input())

n = 5

resCnt = 0# 记录子序列的个数

resList = [0] * n

minFlag = 1# 为了保证不重复,维护一个minFlag,来确保每次拆分后的最小值

p = 0

resolve(n, minFlag)

之前在写这道程序题时,使用n, m两个数来做递归。初始值 n = m。

然后每次做判断:

当 n=1 or m = 1 时:

当 n = 1, 直接输出1, 当 m = 1 时,输出 n 个1

当 n = m 时,调用递归函数 divideNum(n, m-1) + 1

当 n < m 时,divideNum(n, n)

当 n > m 时,也分为两种情况:

(1) 第一种 divideNum(n, m-1)

(2) 第二种 divideNum(n-m, n),将这两种的结果相加。

当时通过这种思路来解时,不知道如何输出分解的子序列,只能得出能够分解子序列的个数。

今天上午重新考虑了递归的思路,记录一下能够实现的方法。

标签:__,输出,divideNum,minFlag,python,拆分,序列

来源: https://blog.csdn.net/poplarlang/article/details/101428971

python分割数字_python实现整数拆分,输出拆分序列相关推荐

  1. 念数字,输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

    输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8 ...

  2. python生成数字_Python生成数字图片代码分享

    本文向大家分享了几段Python生成数字图片的代码,喜欢的朋友可以参考.具体如下: 最终版本 # -*- coding:utf-8 -*- from PIL import Image,ImageFon ...

  3. python一组数字按大到小输出_Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

  4. python 字符串 数字_Python基础教程:数字、字符串

    Python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 ...

  5. python筛选数字_Python简单过滤字母和数字的方法小结

    本文实例讲述了Python简单过滤字母和数字的方法.分享给大家供大家参考,具体如下: 实例1 crazystring = 'dade142.!0142f[., ]ad' # 只保留数字 new_cra ...

  6. python判断数字_Python判断字符串是否为数字

    Python判断一个字符串是否为数字,可以分为两种情况考虑. 字符为纯数字 如果需要检测的数字为纯数字,不包括负号,小数点等,可以使用字符串的isdigit()函数来判断>>> a ...

  7. python浮点数输出格式_python常见的格式化输出小结

    本文总结了一些简单基本的输出格式化形式,下面话不多说了,来看看详细的介绍吧. 一.打印字符串 >>> print "I'm %s" % ("jihite ...

  8. python input 数字_Python:raw_input读取数字的问题

    raw_input函数总是返回一个'string'类型的raw_input docs,所以我们必须在这种情况下将totPrimes'string'类型转换为'int'或'float'类型,如下所示:t ...

  9. python打印浮点数_python – 打印整数或带有n位小数的浮点数

    使用Python 3 *,您可以只使用 round(),因为除了舍入浮点数,当应用于整数时,它将始终返回一个int: >>> num = 1.2345 >>> ro ...

最新文章

  1. ueeditor 百度编译器使用onchange效果
  2. python是个啥-Python是个什么鬼?师兄用它一年发表5篇SCI!
  3. Laravel 事件侦听的几个方法 [Trait, Model boot(), Observer Class]
  4. promise ajax 队列,ES6中的promise,从使用promise封装ajax说起
  5. STM32 的 JLink 调试时「Flash Timeout」和「Flash Download Failed」问题解决
  6. Spring Boot YAML配置
  7. svn怎么上传文件 — 百度经验无耻推广
  8. mysql count转字符串_MySQL字符串函数
  9. csgo客户文件与服务器,csgo与远程服务器
  10. windows api学习笔记-简单的记事本
  11. Unity 检测物体是否在相机视野范围内
  12. SysV和BSD启动风格的比较
  13. 4~20mA变送器量程与输入电流、输出电流的关系
  14. php判断当前浏览器是否微信浏览器
  15. 100个特别的遥感应用和用途
  16. 使用unity制作游戏——打砖块
  17. 磁盘的扩展卷和压缩卷显示灰色,无法使用
  18. 2015年自我激励及2014年的总结
  19. DVFS--动态电压频率调整
  20. php 网站计数器,php网站计数器

热门文章

  1. WIN32 使用事件实现高效生产者消费者模型
  2. Windows消息机制学习笔记(三)—— 消息的接收与分发
  3. 【Web】让你的web页面滚动更有趣
  4. Laravel 中 Controller访问Model函数/常量
  5. 1131 Subway Map (30 分)【难度: 难 / Dijkstra最短路】
  6. MySQL查询的进阶操作--分页查询
  7. SQL语言之数据控制语言(Oracle)
  8. rocksdb原理_手摸手学习 RocksDB 的 Write Buffer Manager
  9. matlab mbuild setup,关于mbuild的一个问题
  10. 信息系统项目管理知识--信息安全