题解 | #放苹果#

放苹果

https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf

package main

import (
    "fmt"
)

func calculate(m int, n int) int {
    // dp[i][j] 表示把 i 个苹果放入 j 个盘子里,具有的不同放法,则 dp[m][n] 即为所求
    dp := make([][]int, m+1)
    for i:=0; i<len(dp); i++ {
        dp[i] = make([]int, n+1)
    }

    // 初始化
    for i:=1; i<=m; i++ {
        dp[i][0] = 1
        dp[i][1] = 1
    }
    for j:=1; j<=n; j++ {
        dp[0][j] = 1
        dp[1][j] = 1
    }

    // 动态转移方程
    for i:=2; i<=m; i++ {
        for j:=2; j<=n; j++ {
            if i < j {
                dp[i][j] = dp[i][i]
            } else {
                dp[i][j] = dp[i][j-1] + dp[i-j][j]
            }
        }
    }

    return dp[m][n]
}

func main() {
    var m int
    var n int
    fmt.Scan(&m, &n)

    fmt.Println(calculate(m, n))
}
// 本题输入为一个整形数字,所以采用:fmt.Scan(&m, &n)

全部评论

相关推荐

11-13 12:02
门头沟学院 Java
我要娶个什么名:好骂,好骂 别学计算机就行了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务