- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
广东财经大学Java2012-2013上学期考试
广 东 财 经 大 学 试 题 纸
_2012—2013_学年第__2 _学期 考试时间共 300 分钟
课程名称 _ 面向对象程序设计 课程代码 110154
课程班号 12计算机实验班 共6页
----------------------------------------------------------------------------------------------------------------------------------------
一、算法设计与分析
一个长度为L(L≥1)的升序序列S,处在第表示不超过的最大整数)个位置的数称为S的中位数。例如,若序列S1=(11, 13, 15, 17, 19),则S1的中位数是15。两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2, 4, 6, 8, 20),则S1和S2的中位数是11。现有两个等长升序序列A和B,试设计一个在时间方面尽可能高效的算法,找出两个序列A和B的中位数。要求:
(1)给出算法的基本设计思想。(2)分析你所设计算法的时间复杂度。,得5分,因为若,你的程序在你的机器上运行,在你可以接受的时间内,程序得不到结果;若你的算法时间复杂度为,得10分,因为这种程序在你可以接受的时间内(如几分钟或十几分钟)可以得到结果;若你的算法时间复杂度小于,得20分,因为这种程序可以在不到千分之一秒的时间得到结果。
二、程序填空
以下是求解八皇后问题的递归程序,其中queensRecursion方法输出一个可行解,queensRecursionAllSolutions方法输出所有可行解。请仔细阅读程序,并参考程序中的注释填空。
//求解八皇后问题的递归算法
public class QueensRecursion {
/**
* @param args
*/
private int[][] queens=new int[8][8];
private int solutions;//用于统计解的个数
public QueensRecursion() {
//构造函数,对queens初始化
int i,j;
for (i=0;i8;i++)
for (j=0;j8;j++)
queens[i][j]=0;
solutions=0;
}
public int getSolutions() {
return solutions;
}
public void printQueens() {
//输出矩阵queens
int i,j;
for (i=0;iqueens.length;i++) {
for (j=0;jqueens[i].length;j++)
System.out.print(queens[i][j]+ );//输出一行
System.out.println();//行末换行
}
System.out.println();//输出完一个矩阵后空一行
}
public boolean positionIJOk(int i, int j) {
//检测在queens数组中位置(i,j)是否合法
int m,n;
boolean ok=true;
for (m=i-1;m=0;m--) {//垂直上方
if (queens[m][j]==1) ok=false;
}
for (m=i-1,n=j-1;m=0 n=0; (1) ) {//左上方
if (queens[m][n]==1) ok=false;
}
for (m=i-1,n=j+1;m=0 n8; (2) ) {//右上方
if (queens[m][n]==1) ok=false;
}
return ok;
}
public boolean queensRecursion(int i) {//求解八皇后问题,输出一个可行解
int j;
if (i==8) {
printQueens();
solutions++;
;
} else {
for (j=0;j8;j++) {
if (positionIJOk(i,j)) {
queens[i][j]=1;
if (
文档评论(0)