分解自然数 题解

T1:

【题目描述】

输入自然数 n(n<100),输出所有和的形式。不能重复。如:4=1+1+2;4=1+2+1;4=2+1+1 属于一种分解形式。

【样例输入】

7

【样例输出】

1:7=1+6

2:7=1+1+5

3:7=1+1+1+4

4:7=1+1+1+1+3

5:7=1+1+1+1+1+2

6:7=1+1+1+1+1+1+1

7:7=1+1+1+2+2

8:7=1+1+2+3

9:7=1+2+4

10:7=1+2+2+2

11:7=1+3+3

12:7=2+5

13:7=2+2+3

14:7=3+4

T2:

【题目描述】

输入自然数 n 和 m(n,m<100),输出所有分解,分解后的每一项都不大于 m 的。不能重复。如:4=1+1+2;4=1+2+1;4=2+1+1 属于一种分解形式。

【样例输入】

7 4

【样例输出】

1:7=1+1+1+4

2:7=1+1+1+1+3

3:7=1+1+1+1+1+2

4:7=1+1+1+1+1+1+1

5:7=1+1+1+2+2

6:7=1+1+2+3

7:7=1+2+4

8:7=1+2+2+2

9:7=1+3+3

10:7=2+2+3

11:7=3+4

T3:

【题目描述】

输入自然数 n 和 m(n,m<100),输出所有分解项数不超过 m 的所有形式。不能重复。如:4=1+1+2;4=1+2+1;4=2+1+1 属于一种分解形式。

【样例输入】

7  4

【样例输出】

1:7=1+6

2:7=1+1+5

3:7=1+1+1+4

4:7=1+1+2+3

5:7=1+2+4

6:7=1+2+2+2

7:7=1+3+3

8:7=2+5

9:7=2+2+3

10:7=3+4

=======================题解===================

递归函数中传入两个参数x,y,分别是当前n的值与项数,函数体内循环1~x/2,当最大的加数小于n时,在答案数组的第y个元素中存当前循环的值,y+1中存n-i,这样每递归一次就是一种情况,只要在调函数前输出即可,之后再传入当前n值减去i作为递归到下一层的n值,若对最大加数与项数有限制则需要在存的时候判断一下。


阅读更多
文章标签: 深度优先搜索
个人分类: 搜索
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭