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

给定整数作为输入,打印所有唯一整数分区

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

给定整数作为输入,打印所有唯一整数分区

我会这样处理:

首先,概括问题。您可以定义一个功能

printPartitions(int target, int maxValue, string suffix)

规格:

打印目标的所有整数分区,后跟后缀,以使分区中的每个值最多为maxValue

请注意,始终至少有1个解决方案(假设target和maxValue均为正),全为1。


您可以递归使用此方法。因此,首先考虑一下基本情况:

printPartitions(0, maxValue, suffix)

应该简单地打印

suffix


如果

target
不是
0
,则必须选择:不使用
maxValue
(如果
maxValue >target
只有一个选项:不要使用)。如果你不使用它,你应该降低
maxValue
1

那是:

if (maxValue <= target)    printPartitions(target-maxValue, maxValue, maxValue + suffix);if (maxValue > 1)    printPartitions(target, maxValue-1, suffix);

结合所有这些,就可以得到一个相对简单的方法(这里用Java编码,我对语句进行了一些重新排序,以获得与您描述的完全相同的顺序):

void printPartitions(int target, int maxValue, String suffix) {    if (target == 0)        System.out.println(suffix);    else {        if (maxValue > 1) printPartitions(target, maxValue-1, suffix);        if (maxValue <= target) printPartitions(target-maxValue, maxValue, maxValue + " " + suffix);    }}

您可以简单地称其为

printPartitions(4, 4, "");

哪个输出

1 1 1 1 1 1 2 2 2 1 3 4


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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