-
平太阳日
-
有3个柱子(1,2 和3)和3 个不同尺寸的圆盘(A,B 和C)。在每个圆盘的中心有个孔,所以圆盘可以堆叠在柱子上。最初,全部3 个圆盘都堆在柱子1 上:最大的圆盘C在底部,最小的圆盘A在顶部。要求把所有圆盘都移动到柱子3,每次只许移动一个,而且只能先搬动柱子顶部的圆盘,还不许把尺寸较大的圆盘放在尺寸较小的圆盘上。这个问题的初始状态和目标状态如下图所示。 为给出一种移动方法,下列程序使用了深度优先搜索策略,并使用一个长度为3的一维数组来表示圆盘的位置及其叠放关系:int[] platePosition{a,b,c},其中,a表示最大的圆盘的位置,c表示最小的圆盘的位置,a,b,c的取值可以为1,2,或3,分别代表某个圆盘所在的柱子。请填写下列程序的空缺部分,以使程序能够得到一种移动方案。 public class test{ static int[] si={1,1,1}; static node startNode=new node(null,si); static int[] ei={3,3,3}; static node endNode=new node(null,ei); static Vector nodeList=new Vector( ); //记录已经走过的节点 public static void main(String[] args){ node leaf=depthFirstSearch(startNode); } public static node depthFirstSearch(node curNode){ //深度优先 if(______) return (______) ; nodeList.add(curNode); curNode.setSons(nodeList); node[] sons=curNode.getSons(); if(sons==null) return null; ; } class node{ int depth; node father; node[] sons=null; int[] platePosition=new int[3]; node(node father,int[] platePosition){ this.father=father; if(this.father==null) this.depth=1; else this.depth=this.father.depth+1; for(int i=0;i<this.platePosition.length;i++) this.platePosition[i]=platePosition[i]; } public void setSons(Vector nodeList){ Vector v=new Vector(); //移动最大的圆盘 if(platePosition[0]!=platePosition[1] && platePosition[0]!=platePosition[2] && platePosition[1]==platePosition[2]){ int[] p={______}; v.add(new node(this,p)); } //移动第二大的圆盘 if(platePosition[1]!=platePosition[2]){ int[] p={ ______ }; v.add(new node(this,p)); } //移动最小的圆盘 for(int i=1;i<=3;i++) if(platePosition[2]!=i){ int[] p={ platePosition[0] , platePosition[1] , i }; v.add(new node(this,p)); } if(v.size()>0){ //已经走过的节点不允许再走 for(int i=0;i<nodeList.size();i++) for(int j=0;j<v.size();j++) if(((node)nodeList.elementAt(i)).equalNode((node)v.elementAt(j))) ______; this.sons=new node[v.size()]; this.sons=(node[])v.toArray(this.sons); } } public node[] getSons(){ return this.sons; } public boolean equalNode(node n){//用于比较两个节点的platePosition 是否相同 for(int i=0;i<3;i++) if(______) return false; return true; } }
-
各种提高三甘醇的浓度的方法的目标都是()重沸器()。
-
当医务人员的利益与医学界、服务对象以及整个社会等利益发生冲突而不能两全的时候,医务人员能够无私利他、自我牺牲而决不损人利己,使自己的无私利他、自我牺牲行为之和接近等于他与医学界、服务对象以及整个社会等利益发生冲突的行为之和,甚至在重大冲突时能够牺牲生命这种医德境界是()。
-
开业指导专家志愿团提供服务的形式有哪些?()
-
期货业务辅助人员或其它人员有违反《期货从业人员执业行为准则》的,由期货业协会进行处理。()
-
调整转向器啮合间隙时,转向器应处于()位置。
-
属于社会美的是:
-
小儿肠息肉90%发生于()
-
听到弃船信号后,每个人做好准备工作后,到主甲板集合。()