标题:图书排列

将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置。

请计算一共有多少种不同的排列方案。

注意,需要提交的是一个整数,不要填写任何多余的内容。

9 9

10 9

9 9

9 9

9 10

7 7

9 7

  1. package 第三次模拟;
  2. public class Demo3图书排列 {
  3. static int res=0;
  4. public static boolean check(int a[])
  5. {
  6. int l=a.length;
  7. for(int i=0;i<l-1;i++)
  8. {
  9. // 两个相邻的元素,如果它们的数字是相邻的,就是两个元素相减的绝对值 == 1;那么就return false;
  10. if(Math.abs(a[i]-a[i+1])==1)
  11. {
  12. return false;
  13. }
  14. }
  15. return true;
  16. }
  17. // static int count=0;
  18. // 将a[]中的a[x] 与 a[y] 的值互换
  19. public static void swap(int a[],int x,int y)
  20. {
  21. //位运算转换节省内存,如果x==y的话,无需转换
  22. if(x==y) return;
  23. a[x]^=a[y];
  24. a[y]^=a[x];
  25. a[x]^=a[y];
  26. // int temp =a[x];
  27. // a[x]=a[y];
  28. // a[y]=temp;
  29. }
  30. public static void dfs(int a[],int begin,int end)
  31. {
  32. if(begin==end)
  33. {
  34. // 检查相邻的书是否被放在了相邻的位置 :以数字来代表书;相邻两个数字的差的绝对值要不等于1
  35. if(check(a))
  36. // 如果相邻的两个数字的差的绝对值不等于1,则找到了一种方案。
  37. res++;
  38. }
  39. for(int i = begin; i <= end; i++)
  40. {
  41. swap(a,begin,i);
  42. dfs(a,begin+1,end);
  43. swap(a,begin,i);
  44. }
  45. }
  46. public static void main(String[] args) {
  47. int a[]={1,2,3,4,5,6,7,8,9,10};
  48. dfs(a,0,a.length-1);
  49. System.out.println(res);
  50. }
  51. }

Java实现 蓝桥杯 图书排列(全排列)的更多相关文章

  1. 日期求星期(java)-蓝桥杯

    日期求星期问题(java)-蓝桥杯 1:基姆拉尔森计算公式(计算星期) 公式: int week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 此处y,m,d指代年 ...

  2. Java实现 蓝桥杯VIP 基础练习 高精度加法

    java算法 蓝桥杯 高精度加法 问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数 ...

  3. Java实现 蓝桥杯VIP 算法训练 排列问题

    算法训练 排列问题 时间限制:1.0s 内存限制:512.0MB 问题描述 求一个0-N-1的排列(即每个数只能出现一次),给出限制条件(一张N*N的表,第i行第j列的1或0,表示为j-1这个数不能出 ...

  4. Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块 资源限制 时间限制:200ms 内存限制:8.0MB 问题描述 连通分块 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 接下来m行,每行2 ...

  5. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  6. java算法 蓝桥杯 乘法运算

    问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99). 输出格式 输出为4行 ...

  7. java算法 蓝桥杯 扶老奶奶街

    一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中 ...

  8. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  9. java算法 蓝桥杯 格子位置

    问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三 ...

随机推荐

  1. CSS实现div填充剩余高度

    相信小伙伴们经常会遇到这个问题,我也是填了很多坑,查了很多资料,才解决的,下面我列出2个方法: 我们的需求如图: 1:(这个方法不推荐使用,因为可能会因为设备不同,而出现未知BUG,特别是div出现p ...

  2. [hdu3486]rmq+枚举优化

    题意:给n个数,求最小的段数,使得每一段的最大值之和大于给定的k.每一段的长度相等,最后若干个丢掉. 思路:从小到大枚举段数,如果能o(1)时间求出每一段的和,那么总复杂度是O(n(1+1/2+1/3 ...

  3. angular controller的使用

    在angular.js最常用的模块就是控制器了,通常我们会这样使用: var myAppModule = angular.module('myApp', []);   myAppModule.cont ...

  4. 我的.vimrc配置

    termux平台下,通过pkg update && pkg upgrade && pkg install vim来获得vim.可是,当我配置.vimrc时发现如果我每在 ...

  5. orcle增删改操作及alter修改表字段操作

    orcle增删改操作:操作前确保当前用户有增删改的权限. --创建表 create table itcast( pid ), pname ) ); drop table itcast; --复制表 c ...

  6. vue的slot

    1.明确一点:分发内容是在父作用域内编译: 2.slot作为备用内容的条件:宿主元素为空且父元素没有要分发的内容. 3.具名slot:<slot name="XXX"> ...

  7. AJAX一

    一.http协议 1.URL http://www.baidu.com/md/index.html 结构:协议+主机名称+目录结构+文件名称 URL完整的结构 <scheme>://< ...

  8. nginx配置之禁止访问和404错误功能配置

    禁止访问功能配置 nginx.conf中的http{}中的server{}的location ..{}中: location / { #拒绝访问,192.168.16.0网段的同学都无法访问 /24是 ...

  9. 使用urllib

    urlopen的基本用法: 工具为:python3(windows) 其完整表达式为: urllib.request.urlopen(url, data=None, [timeout, ]*, caf ...

  10. asp中设置session过期时间方法总结

    http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载   asp中默认session过期时间 ...