说句不好吃的


私信TA

用户名:NotBad

访问量:840

签 名:

等  级
排  名 29405
经  验 470
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 成都信息工程大学
专  业

  自我简介:

TA的其他文章

解题思路:

为了保证不能有重复的,则每位数都要比前一位数相等或者小于前面一位数
例如 对 7 分成 3 份 可以看成a,b,c  --->  a<=b<=c 这样就能保证不会有重复的

对a(也就是第一位数)来说 一共有 7//3 种可能性 也就是 1,2

对b(第二位数)来说 一共有 (7-a)//2-a种可能性 

        a=1    b有 (7-1)//2-a+1 = 3 种可能 --> 1,2,3,

        a=2    b有 (7-2)//2-a+1 = 1 种可能 --> 2

只要a和b确定下来 则c也就可以确定


参考代码:

def DFS(x, k, n):
   if k == 1:
       return 1
   s = 0
   for i in range(x, n // k + 1):  # 能取的数有多少
       s += DFS(i, k - 1, n - i)
   return s


n, k = map(int, input().split())
print(DFS(1, k, n))

 

0.0分

6 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区