题解 | #数的划分#

数的划分

http://www.nowcoder.com/practice/24c2045f2cce40a5bf410a369a001da8

emmm,超时
基本可以转换,k个数字组成和为n的情况有多少种,待写完不超时的再来补充

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int 被划分的数
     * @param k int 化成k份
     * @return int
     */
    List<List<Integer>> list = new ArrayList<>();
    public int divideNumber (int n, int k) {
        if(n < k){
            return 0;
        }
        if(n == k){
            return 1;
        }
        dfs(n , 0 , k , new ArrayList<>() ,0);
        return list.size();

    }
    public void dfs(int n ,int depth , int k , List<Integer> l ,int val){
        if(depth == k && val == n){
            List<Integer> temp = new ArrayList<>(l);
            Collections.sort(temp);
            if(!list.contains(temp)){
                list.add(temp);
            }
            return ;
        }
        if(depth > k || val > n){
            return ;
        }
        for(int i = 1 ; i <= n ; i ++){
            l.add(i);
            dfs(n , depth + 1 , k , l , val + i);
            l.remove(l.size() - 1);
        }
    }
}
全部评论
俺也超时😭
点赞 回复 分享
发布于 2021-04-28 17:02

相关推荐

M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务