标题:图书排列

将编号为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);
}
}

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. asp.net core + entity framework core 多数据库类型支持实战

    根据微软官方文档的说法,有两种方法可以实现在一个app中同时适应多种不同类型的数据库,并且全部支持migrations操作.其一,使用两个dbcontext:其二,修改migration文件,添加特定 ...

  2. codingame

    无聊登了一下condingame,通知说有本周谜题,正好刚撸完bfs,想尝试下. 题目链接:https://www.codingame.com/ide/17558874463b39b9ce6d4207 ...

  3. JSP+Servlet+JDBC+mysql实现的个人日记本系统

    项目简介 项目来源于:https://gitee.com/wishwzp/Diary 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的个人日记本系统.涉及技术少 ...

  4. Angular 初体验

    事情起源当初一个简单的截屏然后推流出去的工具,这个工具当初我用winform简单实现了下,然后因公司业余,添加许多程序包,需要自动管理这些程序包,包含下载更新上传等,以及与后台交互,学生老师提醒,自动 ...

  5. node的events模块

    events可以说是node实现异步的基石,也是其他几个常用核心模块api的异步方法的原型. var eventEmitter=require('events').EventEmitter; //va ...

  6. Colorful String

    Colorful String #include <bits/stdc++.h> using namespace std; typedef long long ll; ; char s[m ...

  7. nginx安装目录文件

    nginx安装目录 conf 存放nginx的配置文件 在修改配置文件nginx.conf之前,一般先备份cp nginx.conf nginx.conf.bak html 存放前端文件的 默认带有首 ...

  8. jquery 根据 option 的 text 定位选中 option

    $('#test option[text="b"]').attr("selected",true); 上面的方法在 jquery 低于 1.4.2 的版本(含) ...

  9. flatbuffer介绍和用法

    介绍 flatbuffer是google发布的一个跨平台序列化框架具有如下特点 1.对序列化的数据不需要打包和拆包 2.内存和效率速度高,扩展灵活 3.代码依赖较少 4.强类型设计,编译期即可完成类型 ...

  10. 从零开始搭建一个PaaS平台 - 我们要做什么

    前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...