您的位置:首页 > 编程语言 > Java开发

蓝桥杯Java练习——排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。

2017-03-30 21:06 453 查看


要安排:3个A国人,3个B国人,3个C国人坐成一排。

要求不能使连续的3个人是同一个国籍。

求所有不同方案的总数?

 

参考答案:

283824

public class aaa {
static int sum = 0; // 不同方案总个数
// 检查是否有同一国人连续3个
public static boolean check(char[] c){
int count = 1; // 初始个数
for(int i=0;i<c.length-1;i++){
if(c[i]==c[i+1]){
count++;
}else{
count = 1; // 初始个数
}
if(count>=3) return true;
}
return false;
}
// 全排列
public static void allSort(char[] c,int start,int end){
if(start>end){
if(!check(c)){ // 检查是否有同一国人连续3个
sum++; // 没有,方案总个数加1
}
return ;
}else{
for(int i=start;i<=end;i++){
char temp = c[i];
c[i] = c[start];
c[start] = temp;
allSort(c,start+1,end); // 递归
temp = c[i];
c[i] = c[start];
c[start] = temp;
}
}
}
public static void main(String[] args){
char[] pl = {'A','A','A','B','B','B','C','C','C'};
allSort(pl,0,pl.length-1); // 全排列
System.out.println(sum);
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐