首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

求解两道排列组上算法题

2013-06-19 
求解两道排列组合算法题1.正六面体染色  正六面体用4种颜色染色。  共有多少种不同的染色样式?  要考虑六面

求解两道排列组合算法题
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

[解决办法]
第1题 Burnside引理,参考维基百科上的公式,http://en.wikipedia.org/wiki/Burnside%27s_lemma
(n^6 + 3*n^4 + 12*n^3 + 8*n^2)/24,令n=4即可

第2题 容斥原理(包含排斥原理)
9! - 7!*6*3 + 5!*6*6*3 - 3!*6*6*6

热点排行