排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。
2013-04-19 19:34
357 查看
/* 排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。 要求不能使连续的3个人是同一个国籍。 求所有不同方案的总数? */ public class T13 { 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[] c = {'A','A','A','B','B','B','C','C','C'}; allSort(c,0,c.length-1); // 全排列 System.out.println(sum); } }运行结果:
283824
相关文章推荐
- 排座位 要安排: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个人是同一个国籍.
- 蓝桥杯Java练习——排座位 要安排:3个A国人,3个B国人,3个C国人坐成一排。
- 排座位(安排:3个A国人,3个B国人,3个C国人坐成一排。)
- n个人n个座位,求不能坐在自己座位上种数
- 正则表达式:匹配6~16位字符(要求:不能出现空格,不能连续9位以下数字)
- 实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
- 某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。 上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更。 此外,由于工作需要,还有如下要求:
- 有3个商人和3个随从在河岸边,他们都想过河,只有一艘船,没有船夫,而且船一次只能载2个人.任何时候船过了河,只要这6个人没过完,都得人回来接,怎么才能顺利过河呢?要求任何时候都不得随从数目大于商人数目,防止他们劫财.
- 邮箱名不能用2个字母的,需要建立为3个字母以上的
- //4. 编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。
- 同一供应商同一物料存在有效报价时不能再新增报价
- 【题解】n个数最大公约数总和,m组人坐一排同一组的不能相邻,CF #300 F
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- Repeater中不能用ImageButton显示图片用什么来代替最好我的个人建议
- 开源夏令营第六周--要求调整及近期安排
- day01之合并两个有序链表+实现1+2+3...+n要求不能使用乘除法循环条件判断等
- 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人