题解 | #数的划分#
数的划分
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); } } }