System.out.print("\t");
System.out.print(""+s.get(j));
}
count++;
System.out.println("\t第"+count+"种解决方案");
i=m[s.size()-2];
sum-=w[i];
s.pop();
s.pop();
k--;
}elseif((i==(w.length-1))&&((sum+w[i])>T)){
i=m[s.size()-1];
sum-=w[i];
s.pop();
k--;
}
}
[运行结果及分析]
结果分析:
运行时从键盘输入背包体积和物品的单个体积。
将显示出可行的方法分配和总共可行的方法种数。
课程设计题目二:
[实验内容]
内部排序算法的性能分析
[问题描述]
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。
[需求分析]
(1)对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
(2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标有:
关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动);
(3)输出比较结果。
[概要设计]
privatelongbubbleSort(int[]arra){}//冒泡排序
privatelonginsertSort(int[]a){}//直接插入排序
privatelongchoseSort(inta[]){}//直接选择排序
privatelongquickSort(inta[],intlow,inthigh){}//快速排序
publiclongshellSort(int[]a,int[]d,intnumOfD){}//希尔排序
publicstaticvoidcreateHeap(int[]a,intn,inth){}//堆排序
[存储结构]
数组
[流程图]
[详细设计]
booleanflag=true;//是否继续
inta[]=newint[4000];//初始化数组
intk,high=0;//k是产生的随机个数,high是快速排序的参数
intnumOfD=3;//希尔排序的参数
intd[]={50,25,1};//希尔排序的参数
[运行结果及分析]
结果分析:
每个排序所用的时间
课程设计题目三
[实验内容]
停车厂模拟管理程序的设计与实现
[问题描述]
设停车厂只有一个可停放几辆汽车的狭长通道,且只有—个大门可供汽车进出。
汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。
在这里假设汽车不能从便道上开走,试设汁这样一个停车厂模拟管理程序。
为了以下描述的方便,停车厂的停车场用“停车位”进行叙述,停车厂的便道用“便道”进行叙述。
[需求分析]
本程序从总体上分为4个大的功能模块,分别为:
程序功能介绍和操作提示模块、汽车进入停车位的管理模块、汽车离开停车位的管理模块、查看停车厂状态的查询模块。
[概要设计]
有"1.入口停车2.显示停车信息3.车辆离开4.退出系统"几种功能
[存储结构]Stack堆栈
[流程图]
[详细设计]
switch(i){
case1:
{
System.out.println("请输入车牌号:
");
BufferedReaderbrs=newBufferedReader(newInputStreamReader(System.in));
Stringcar=brs.readLine();
myStack.push(car);sum++;
if(sum<=5){
System.out.println("牌照为"+car+"的车进入第"+myStack.size()+"车道");
}
else{
System.out.println("牌照为"+car+"的车进入第"+(myStack.size()%5)+"便道");
}
break;
}
case2:
{
System.out.println("******停车场信息*******");
for(intj=0;jif(j<5)
System.out.println("牌照为"+myStack.get(j)+"在第"+(j+1)+"车");
else{
System.out.println("牌照为"+myStack.get(j)+"在第"+((j+1)%5)+"便道");
}
}
System.out.println("***********************");break;
}
case3:
{
System.out.println("请输入排在第几位的车出来");
BufferedReaderbrj=newBufferedReader(newInputStreamReader(System.in));
intj=Integer.parseInt(br.readLine());
System.out.println("第"+j+"车位的车已经出来");
intn=myStack.size();
for(intk=j-1;kchun[k]=myStack.pop();
}
for(intm=n-1;m>=j;m--){
myStack.push(chun[m-1]);
}
break;
}
case4:
{
flag=false;
System.exit(0);
}
default:
System.out.println("inputerror!
");
}
[运行结果及分析]
结果分析:
JA001-----JA007先进入车道,由于只有5个车道,JA006,JA007只能在第一,二便道,然后第三车位的车辆离开,后面的车依次上来,则如显示结果。
4,为退出系统,正常退出系统
三、心得体会
通过这次课程设计,使我了解到数据结构的很多知识,同时也认识到自己很多方面的不足,刚拿到题目时,题目都不太懂,经过一直地研究与先找别人的代码端详,再自己完成,这是一个学习别人的过程,同时也是自己提升的过程,我希望以后自己能早别人一步,这样做起课程设计来,会比较得心应手,而且课程设计是这门课的综合应用。
学到的知识不只是要记住,更应该是应用与扩展。
四、参考文献
[1]朱站立.数据结构——java语言描述.2005年12月北京清华大学出版社
[2]胡伏湘,雷军环.Java程序设计实用教程.2005年7月北京清华大学出版社