在写这篇文章之前,xxx已经写过了几篇关于改检查class主题的文章,想要了解的朋友可以去翻一下之前的文章

    每日一道理
灯,带有一种明亮的光,每当深夜来临,是它陪伴着你,如此默默无闻。它是平凡的,外表华丽与否,那都是一样的,珍珠点缀,水晶加饰的灯它只能用以装饰,来满足人们的虚荣心,比起这,普普通通的日光灯是幸运的,因为它照明的本性没有改变,如同生活中的一部份人平平凡凡却实实在在。
  1. /* 排坐位
  2. 要安排:3个A国人,3个B国人,3个C国人坐成一排。
  3. 要求不能使连续的3个人是同一个国籍。
  4. 求所有不同方案的总数?
  5. */
  6. /*public class 排坐位 {
  7. public static char[] c = {'A','A','A','B','B','B','C','C','C'};
  8. public static int kinds= 0; // 不同方案总个数
  9. // 检查是不是有同一国人连续3个
  10. public static boolean check(char[] c){
  11. int count = 1; // 初始个数
  12. for(int i=0;i<c.length-1;i++){
  13. if(c[i]==c[i+1]){
  14. count++;
  15. }else{
  16. count = 1; // 初始个数
  17. }
  18. if(count>=3) return true;
  19. }
  20. return false;
  21. }
  22. // 全排列
  23. public static void f(char[] c,int start,int end){
  24. if(start == end){
  25. if(!check(c)){ // 检查是不是有同一国人连续3个
  26. kinds++; // 不同方案总个数加1
  27. }
  28. return ;
  29. }else{
  30. for(int i=start;i<=end;i++){
  31. char temp = c[i];
  32. c[i] = c[start];
  33. c[start] = temp;
  34. f(c,start+1,end); // 递归
  35. temp = c[i];
  36. c[i] = c[start];
  37. c[start] = temp;
  38. }
  39. }
  40. }
  41. public static void main(String[] args){
  42. f(c,0,c.length-1); // 全排列
  43. System.out.println("kinds:"+kinds);
  44. }
  45. }
  46. */
  47. 方法二
  48. public class 排坐位
  49. {
  50. public static int kinds=0;
  51. public static int b[]=new int[9];
  52. public static boolean vis[]=new boolean[9];
  53. public static int a[]=new int[]{1,1,1,2,2,2,3,3,3};
  54. static void dfs(int start,int end)
  55. {
  56. if(start==end)
  57. {
  58. kinds++;
  59. }
  60. else
  61. {
  62. for(int i=0;i<a.length;i++)
  63. {
  64. if(!vis[i])//未上坐
  65. {
  66. b[start]=a[i];
  67. if(start>1 && b[start-2]==b[start-1] && b[start-1]==b[start])
  68. continue;//边排边检查进步效率
  69. vis[i]=true;
  70. dfs(start+1,end);
  71. vis[i]=false;
  72. }
  73. }
  74. }
  75. }
  76. public static void main(String[] args)
  77. {
  78. dfs(0,a.length);
  79. System.out.println("kinds:"+kinds);
  80. }
  81. }
  82. 运行结果:
  83. kinds:283824
  84. 扩展:
  85. 如果每个国度的三个人是可重复的,即来自同一个国度的三个人是不辨别的,所以序列是可以重复的。
  86. 程序如下:
  87. import java.util.Arrays;
  88. public class 排坐位
  89. {
  90. static int kinds=0;
  91. static int a[]=new int[4];
  92. static int b[]=new int[4];
  93. static int c[]=new int[4];
  94. static int aim[]=new int[10];
  95. public static void main(String[] args)
  96. {
  97. Arrays.fill(a,1);
  98. Arrays.fill(b,2);
  99. Arrays.fill(c,3);
  100. dfs(1,3,3,3);
  101. System.out.println("kinds:"+kinds);
  102. }
  103. static void dfs(int start,int a,int b,int c)
  104. {
  105. if(start==10)
  106. {
  107. kinds++;
  108. for(int i=1;i<start;i++)
  109. {
  110. System.out.printf("%c",(aim[i]+64));
  111. }
  112. System.out.println();
  113. }
  114. else if(start<3)//肯定不会涌现三个座来自国度相同的,因为就两坐位。
  115. {
  116. aim[start]=1;
  117. a--;
  118. dfs(start+1,a,b,c);
  119. a++;
  120.  
  121. aim[start]=2;
  122. b--;
  123. dfs(start+1,a,b,c);
  124. b++;
  125.  
  126. aim[start]=3;
  127. c--;
  128. dfs(start+1,a,b,c);
  129. c++;
  130. }
  131. else
  132. {
  133. aim[start]=1;
  134. if(!(aim[start-2]==aim[start-1] && aim[start-1]==aim[start]) && a>0)//不是3连号,且A国度还有人未上坐
  135. {
  136. a--;
  137. dfs(start+1,a,b,c);
  138. a++;
  139. }
  140.  
  141. aim[start]=2;
  142. if(!(aim[start-2]==aim[start-1] && aim[start-1]==aim[start]) && b>0)//同理
  143. {
  144. b--;
  145. dfs(start+1,a,b,c);
  146. b++;
  147. }
  148.  
  149. aim[start]=3;
  150. if(!(aim[start-2]==aim[start-1] && aim[start-1]==aim[start]) && c>0)//同理
  151. {
  152. c--;
  153. dfs(start+1,a,b,c);
  154. c++;
  155. }
  156. }
  157. }
  158. }
  159. 运行结果为(部份结果):
  160. CCBBAABCA
  161. CCBBAACAB
  162. CCBBAACBA
  163. CCBBABAAC
  164. CCBBABACA
  165. CCBBABCAA
  166. CCBBACAAB
  167. CCBBACABA
  168. CCBBACBAA
  169. CCBBCAABA
  170. CCBBCABAA
  171. CCBCAABAB
  172. CCBCAABBA
  173. CCBCABAAB
  174. CCBCABABA
  175. CCBCABBAA
  176. CCBCBAABA
  177. CCBCBABAA
  178. kinds:1314

文章结束给大家分享下程序员的一些笑话语录: 乔布斯:怎么样还是咱安全吧!黑客:你的浏览器支持国内网银吗?苹果可以玩国内的网游吗乔布斯:......不可以黑客:那我研究你的漏洞干嘛,我也需要买奶粉!

---------------------------------
原创文章 By
检查和class
---------------------------------

检查class排座位的更多相关文章

  1. 团体程序设计天梯赛-练习集L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  2. L2-010. 排座位

    L2-010. 排座位 题目链接:https://www.patest.cn/contests/gplt/L2-010 并查集 相关题目:L2-007. 家庭房产,L3-003. 社交集群 下午打的时 ...

  3. L2-010. 排座位(并查集)*

    L2-010. 排座位 参考博客 #include<iostream> #include<math.h> using namespace std; ]; ][]; int fi ...

  4. [IOI2018] seats 排座位

    [IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都 ...

  5. pta l2-10(排座位)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805066135879680 题意:给宴席排座位,有n个人,m个 ...

  6. CCCC 排座位 图着色问题

    1排座位:https://www.patest.cn/contests/gplt/L2-010 2图着色问题 https://www.patest.cn/contests/gplt/L2-023 建图 ...

  7. 排座位&&Little Elephant And Permutation——排列dp的处理

    排列的问题,就是要把序列排个序,使之达到某种最优值或者统计方案数 dp可以解决部分排列问题. 通常的解决方案是,按照编号(优先级)排序决策,从左到右决策两种. 这里主要是第一个. 排座位• 有

  8. pat 团体天梯赛 L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  9. CCCC L2-010. 排座位【并查集/分类讨论】

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

随机推荐

  1. 蓝牙(2)用BluetoothAdapter搜索蓝牙设备示例

    注意在搜索之前要先打开蓝牙设备 package com.e.search.bluetooth.device; import java.util.Set; import android.app.Acti ...

  2. 8款必备的免费移动Web开发框架(HTML5/JS)

    标签:JavaScript HTML5 移动开发 Web开发 jQuery 应用程序框架 插件 概述:随着智能手机和平板电脑的普及,移动开发逐渐成为众多开发者追逐的潮流.拥有一款优秀的移动Web开发框 ...

  3. js模仿jquery里的几个方法next, pre, nextAll, preAll

    /*siblings函数, 选取node的所有兄弟节点*/ function siblings(node){ if(node.nodeType === 1){ node.flag = true; // ...

  4. CodeForces 135 B. Rectangle and Square(判断正方形和 矩形)

    题目:http://codeforces.com/problemset/problem/135/B 题意:给8个点 判断能否用 4个点构成正方形,另外4个点构成 矩形. 输出 第一行是正方形 ,第二行 ...

  5. 4种activity的启动模式

    在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...

  6. Codeforces 633 C Spy Syndrome 2 字典树

    题意:还是比较好理解 分析:把每个单词反转,建字典树,然后暴力匹配加密串 注:然后我就是特别不理解,上面那种能过,而且时间很短,但是我想反之亦然啊 我一开始写的是,把加密串进行反转,然后单词正着建字典 ...

  7. centos ssh 免密码登录

    最近在学习的过程中遇到这个问题: A主机和B主机: A 免密码登录B: 首先在A的 ~/.ssh 目录中 执行 ssh-keygen -t rsa 一路回车 最后生成连个文件: 将id_rsa.pub ...

  8. CentOS7 安装98五笔输入法

    86版的安装方式,网上找到一堆,折腾了很久才把98版的安装上,记录一下. 从这里下了这个 http://bbs.chinaunix.net/forum.php?mod=viewthread&t ...

  9. wuzhicms 查看模板中的所有可用变量和值

    将代码放到模板中. {php print_r(get_defined_vars());} 页面显示如下: 这样看不清楚. 通过查看页面源文件的方式打开. 例如:chrome 浏览器打开方式,在页面空白 ...

  10. HTTP 报文总结、外送两本电子书

    写在前面的话:喜欢这个比喻:如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹. HTTP是一个应用层协议,研究它的内容的确很枯燥,没啥意思,都是规定好的,我们只需要知道是什么就好了 ...