标题:图书排列

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

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

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

9 9

10 9

9 9

9 9

9 10

7 7

9 7

package 第三次模拟;

public class Demo3图书排列 {
static int res=0;
public static boolean check(int a[])
{
int l=a.length;
for(int i=0;i<l-1;i++)
{
// 两个相邻的元素,如果它们的数字是相邻的,就是两个元素相减的绝对值 == 1;那么就return false;
if(Math.abs(a[i]-a[i+1])==1)
{
return false;
}
}
return true;
}
// static int count=0;
// 将a[]中的a[x] 与 a[y] 的值互换
public static void swap(int a[],int x,int y)
{
//位运算转换节省内存,如果x==y的话,无需转换
if(x==y) return; a[x]^=a[y];
a[y]^=a[x];
a[x]^=a[y];
// int temp =a[x];
// a[x]=a[y];
// a[y]=temp; }
public static void dfs(int a[],int begin,int end)
{
if(begin==end)
{
// 检查相邻的书是否被放在了相邻的位置 :以数字来代表书;相邻两个数字的差的绝对值要不等于1
if(check(a))
// 如果相邻的两个数字的差的绝对值不等于1,则找到了一种方案。
res++;
} for(int i = begin; i <= end; i++)
{
swap(a,begin,i);
dfs(a,begin+1,end);
swap(a,begin,i);
}
}
public static void main(String[] args) { int a[]={1,2,3,4,5,6,7,8,9,10};
dfs(a,0,a.length-1);
System.out.println(res);
}
}

最新文章

  1. ACL权限设置命令setfacl和getfacl命令
  2. jQuery使用之(三)处理页面的元素
  3. linux 回收站的添加
  4. 使用异步 I/O 大大提高应用程序的性能
  5. JVM问题定位工具
  6. 常见的mongodb可视化工具
  7. KM算法的应用
  8. C语言中关于运算符优先级别
  9. shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
  10. React Native之AppRegistry模块
  11. Python爬取谷歌街景图片
  12. python遍历文件
  13. springmvc中messageConverter用法
  14. Django中各目录文件的作用
  15. python教程_1
  16. maven下的jar项目打包的方法
  17. Java 之 POI各Jar包作用
  18. iOS 性能调优
  19. 连接数据库-corina
  20. 51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)

热门文章

  1. springBoot整合Spring-Data-JPA, Redis Redis-Desktop-Manager2020 windows
  2. python3语法学习第四天--序列
  3. [hdu4552]最长公共前缀
  4. Semaphore和AQS
  5. 使用IDEA远程向伪分布式搭建的Hadoop提交MapReduce作业
  6. Python 简明教程 --- 2,第一个Python 程序
  7. 小程序-云开发 bindscroll滚动事件执行setData()方法,导致scroll-view视图抖动
  8. ql的python学习之路-day6
  9. E. Physical Education Lessons 动态开辟线段树区间更新
  10. poj2778 AC自动机