题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
package main import ( "fmt" ) func main() { var m , n int fmt.Scan(&m, &n) // 约定 后面的不能够比前面的小 // dfs 搜索即可 ans := 0 // path := make([]int, 0) var dfs func(level int , preLevel int , all int ) dfs = func(level int , preLevel int , all int){ if level == n - 1 && m - all >= preLevel{ // path = append(path, m - all) // fmt.Println(path) ans ++ return } for i := preLevel ; i <= m - all ; i ++{ if i + all <= m { // path = append(path , i) dfs(level + 1 , i , i + all) // path = path[:len(path)-1] } } } dfs(0 , 0, 0) fmt.Println(ans) }