一道算法题的解法,不知对错
在别人的博客发现这样一道题: http://www.cnblogs.com/guoyaohua/p/8711911.html
我的思路是这样的:
如果 N < K , 方案数为0 , 因为不满足每种至少一个的要求
如果 N = K , 方案数为 k! , k的阶乘
如果 N > K , 比如 N 比 K 大 1 , 那么除了必须满足的每种一个的要求 , 还多了一个自由位置, 这个位置可以有 k 种可能。
N 比 K 大 2 , 多了2个自由位置, 这2个位置可以有 k*k 种可能。
N 比 K 大 3 , 多了3个自由位置, 这3个位置可以有 k*k*k 种可能。
所以, 把总的排列法 分为2个集合, 1个集合是必须满足的每种一个的要求 , k! 种可能
1个集合是除此之外的自由位置排列 , k^(N-k) 种可能
那么,总的排列方法就是 : K! * k^(N-k) : 这里存疑, 不知道对还是不对