求解两道排列组合算法题
1.正六面体染色
正六面体用4种颜色染色。
共有多少种不同的染色样式?
要考虑六面体可以任意旋转、翻转。
参考答案:
240
2.排座位
要安排:3个A国人,3个B国人,3个C国人坐成一排。
要求不能使连续的3个人是同一个国籍。
求所有不同方案的总数?
参考答案:
283824
数学解法和JAVA编程解法都可以。只要答案对。求解! 算法 排列组合 JAVA
[解决办法]
public class Test3
{
static int kinds=0;
static int b[]=new int[10];
static boolean vis[]=new boolean[10];
public static void main(String[] args)
{
int a[]=new int[]{0,1,1,1,2,2,2,3,3,3};
dfs(1,a);
System.out.println("kinds:"+kinds);
}
static void dfs(int start,int a[])
{
if(start==a.length)
{
kinds++;
}
else
{
for(int i=1;i<a.length;i++)
{
if(!vis[i])
{
b[start]=a[i];
if(start>2 && b[start-2]==b[start-1] && b[start-1]==b[start]) continue;
vis[i]=true;
dfs(start+1,a);
vis[i]=false;
}
}
}
}
}
//kinds:283824