排列组合
程序员文章站
2022-07-11 09:06:52
...
排列组合
有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。
Input
每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。
Output
对应每组数据输出排列数。(任何运算不会超出2^31的范围)
Sample Input
2 2 1 1
Sample Output
2
改了一小时~~~ 死都没有想到是多组输入我了个草搜索可以做 还有说什么排列组合母函数是什么的
搜索
//package 搜索;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
static int n,m;
static int digit[] = new int [15];
static int num[] = new int[15];
public static int DFS(int m)
{
int sum = 0;
if(m == 0) //这个东西到底了所以return 1
{
return 1;
}
for(int i = 1 ; i <= n; i++)
{
if(digit[i] > 0 )
{
digit[i] -- ;
sum += DFS(m - 1);
digit[i] ++;
}
}
return sum;
}
public static void main(String[]args)
{
while(sc.hasNext())
{
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1; i <= n ; i ++)
digit[i] = sc.nextInt(); //表示输入的
System.out.println(DFS(m));
}
}
}
下一篇: Python常见文件操作的函数示例代码