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);
}
}
}
京公网安备 11010502036488号