b站 分解的最小和 有啥更好的方法么

package main

import (
	"fmt"
)

func isSushu(N int) bool {
	for i := 2; i < N/2; i++ {
		if N%i == 0 {
			return false
		}
	}
	return true
}

func findPQ(N int, dp []int) int {
	min := 9999999999
	for i := 2; i <= N; i++ {
		for j := i; j <= N; j++ {
			if i*j == N {
				if dp[i]+dp[j] < min {
					min = dp[i] + dp[j]
				}
				break
			} else if i*j > N {
				break
			}
		}
	}
	return min
}

func fillDP(N int, dp []int) {
	for i := 1; i <= N; i++ {
		if isSushu(i) {
			dp[i] = i
		} else {
			res := findPQ(i, dp)
			dp[i] = res
		}
	}
}

func main() {
	var N int
	fmt.Scanln(&N)
	dp := make([]int, N+1)
	fillDP(N, dp)
	fmt.Println(dp[N])

}

A是A了但有啥更优的方法么..#bilibili笔试#
全部评论
动态规划可以吗
点赞 回复 分享
发布于 2022-09-02 10:34 上海
有没有Java版本的,自己没做出来
点赞 回复 分享
发布于 2022-09-02 14:22 浙江

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务