蓝桥杯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);
}
}
要安排: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);
}
}
相关文章推荐
- 排座位(安排:3个A国人,3个B国人,3个C国人坐成一排。)
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。
- 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。 求所有不同方案的总数?
- 要安排:3个A国人,3个B国人,3个C国人坐成一排,要求不能使连续的3个人是同一个国籍.求所有不同方案的总数?
- 算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
- 算法笔记_057:蓝桥杯练习 最大的算式 (Java)
- 蓝桥杯 基础练习 十六进制转十进制 java
- 算法笔记_060:蓝桥杯练习 出现次数最多的整数(Java)
- 蓝桥杯 基础练习02 Java实现
- 蓝桥杯 基础练习01 Java实现
- 算法笔记_055-蓝桥杯练习 Tricky and Clever Password (Java)
- java 练习 -蓝桥杯-十六进制转八进制
- 蓝桥杯在线测试之入门练习(JAVA)
- 蓝桥杯 练习系统 数的读法 Java
- 蓝桥杯 BASIC-19 基础练习 完美的代价 Java版
- 3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍.
- 蓝桥杯 练习系统 分解质因数 Java
- 蓝桥杯(Java) 基础练习 闰年判断
- 算法笔记_055:蓝桥杯练习 Tricky and Clever Password (Java)