资源简介
JAVA实现,完整源代码.题目:请编写程序求解篮球错排问题。已知n个篮子一字排开(n为用户输入的任意正整数),从左到右分别标着号:1,2,... ...,n;每个球也有编号,分别也是1,2,... ...,n。现要将这n个球全部放入这n个篮子中,满足:每个篮子放置1个球,球的号不能与其所在的篮子的号相同,且在相邻篮子内的球的球号不能相邻。例如,如果在相邻两个篮子内的球的球号分别为9和10,则是不允许的。请输出所有符合要求的放球方式(对于每种符合要求的放球方式,都应输出在每个篮子中的球号)。
代码片段和文件信息
/**
* 清华大学软件学院程序设计语言考试练习题
* 题目:请编写程序求解篮球错排问题。已知n个篮子一字排开(n为用户输入的
* 任意正整数),从左到右分别标着号:1,2,... ...,n;每个球也有
* 编号,分别也是1,2,... ...,n。现要将这n个球全部放入这n个篮子
* 中,满足:每个篮子放置1个球,球的号不能与其所在的篮子的号相同
* ,且在相邻篮子内的球的球号不能相邻。例如,如果在相邻两个篮子内
* 的球的球号分别为9和10,则是不允许的。请输出所有符合要求的放球
* 方式(对于每种符合要求的放球方式,都应输出在每个篮子中的球号)。
* @author THSS MSE08 HUANGBIN
*
*/
public class BascketBallSort {
//篮子
private String[] basckets;
//篮球
private String[] balls;
public BascketBallSort(int n) {
//初始化篮子
basckets=new String[n];
for(int i=0;i basckets[i]=String.valueOf(i+1);
}
//初始化篮球
balls=new String[n];
for(int i=0;i balls[i]=String.valueOf(i+1);
}
//对n个篮球进行全排列
perm(balls0balls.length-1);
}
//对n个篮球进行全排列,采用分治策略进行递归求解
public void perm(String []bufint startint end){
if(start==end){//只有一个球进行全排列时,则不需要再递归
//检查是否符合要求,如果符合要求,则输出
if(check(buf)){
for(int i=0;i System.out.print(basckets[i]+“(“+buf[i]+“) “);
}
System.out.println();
}
}else{
for(int i=start;i<=end;i++){
//交换i与start元素的值
String temp=buf[i];
buf[i]=buf[start];
buf[start]=temp;
perm(bufstart+1end);//递归求解球的全排列
//还原i与start元素的值
temp=buf[i];
buf[i]=buf[start];
buf[start]=temp;
}
}
}
//对每一个全排列结果进行检查,保证篮子号与球号不一样,并且球号不相邻
public boolean check(String tempBalls[]){
//球号与篮子号不能相同
for(int i=0;i if(tempBalls[i].equals(basckets[i])){
return false;
}
}
//相邻篮子内的球号不能相邻
for(int i=0;i if(Math.abs(Integer.parseInt(tempBalls[i])-Integer.parseInt(tempBalls[i+1]))==1)
return false;
}
return true;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2009-01-13 20:49 求解篮球错排问题\源代码\.classpath
文件 387 2009-01-13 20:49 求解篮球错排问题\源代码\.project
文件 1840 2009-01-13 20:49 求解篮球错排问题\源代码\bin\BascketBallSort.class
文件 404 2009-01-13 20:49 求解篮球错排问题\源代码\bin\Demo.class
文件 2125 2009-01-13 20:49 求解篮球错排问题\源代码\src\BascketBallSort.java
文件 751 2009-01-13 20:49 求解篮球错排问题\源代码\src\Demo.java
文件 434 2009-01-13 20:40 求解篮球错排问题\题目.txt
目录 0 2009-01-13 20:49 求解篮球错排问题\源代码\bin
目录 0 2009-01-13 20:49 求解篮球错排问题\源代码\src
目录 0 2009-01-13 20:49 求解篮球错排问题\源代码
目录 0 2009-01-13 20:50 求解篮球错排问题
----------- --------- ---------- ----- ----
6173 11
相关资源
- JAVA计算器源代码与WINDOWS的计算器长得
- 基于java开发的考勤管理系统
- 国密算法SM4加解密算法JAVA
- 单点登录sso的原理与java实现详细讲解
- java 单机版 考试登陆系统 附有登陆
- java用数组实现约瑟夫环
- Java学生管理系统,使用eclipse,sql s
- java实现蜘蛛纸牌游戏
- 使用java SWT编写界面的,多代码
- swing Java 小家电系统代码
- 超市收银系统Java源代码
- JAVA实现矩阵的加减和转置
- 欧拉回路程序java
- core-3.0.0.jar QR二维码3.0 版本,Java生成
- Java Tomcat二级域名Session共享
- 学籍管理系统JAVA ACCESS 毕业设计
- java基础.xmind
- java聊天室程序带数据库
- Java矩阵包Jama-1.0.3.jar
- Javaweb全套流行框架整理视频
- 练习--java实现的打字游戏
- 断点续传 JAVA版 迅雷
- java教学计划编制的全部代码
- java导出oracle到excel
- Java简单英文打字游戏
- 图书馆管理系统Java源码+MySQl数据库
- Eclipse下运行java Swarm以及jheatbugs的图文
- 基于java的蜘蛛纸牌游戏
- JAVA简易计算器可判断运算符的优先级
- jdk-10.0.2_windows-x64_bin.exe228054
评论
共有 条评论