第一题
1 标题:分机号 2 3 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如: 4 5 751,520,321 都满足要求,而, 6 766,918,201 就不符合要求。 7 8 现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码? 9 10 请直接提交该数字,不要填写任何多余的内容。
第二题
1 标题:五星填数 2 3 如【图1.png】的五星图案节点填上数字:1~12,除去7和11。 4 要求每条直线上数字和相等。 5 6 如图就是恰当的填法。 7 8 请你利用计算机搜索所有可能的填法有多少种。 9 注意:旋转或镜像后相同的算同一种填法。 10 11 请提交表示方案数目的整数,不要填写任何其它内容。
第三题
1 标题:显示二叉树 2 3 排序二叉树的特征是: 4 某个节点的左子树的所有节点值都不大于本节点值。 5 某个节点的右子树的所有节点值都不小于本节点值。 6 7 为了能形象地观察二叉树的建立过程,小明写了一段程序来显示出二叉树的结构来。 8 9 10 class BiTree 11 { 12 private int v; 13 private BiTree l; 14 private BiTree r; 15 16 public BiTree(int v){ 17 this.v = v; 18 } 19 20 public void add(BiTree the){ 21 if(the.v < v){ 22 if(l==null) l = the; 23 else l.add(the); 24 } 25 else{ 26 if(r==null) r = the; 27 else r.add(the); 28 } 29 } 30 31 public int getHeight(){ 32 int h = 2; 33 int hl = l==null? 0 : l.getHeight(); 34 int hr = r==null? 0 : r.getHeight(); 35 return h + Math.max(hl,hr); 36 } 37 38 public int getWidth(){ 39 int w = (""+v).length(); 40 if(l!=null) w += l.getWidth(); 41 if(r!=null) w += r.getWidth(); 42 return w; 43 } 44 45 public void show(){ 46 char[][] buf = new char[getHeight()][getWidth()]; 47 printInBuf(buf, 0, 0); 48 showBuf(buf); 49 } 50 51 private void showBuf(char[][] x){ 52 for(int i=0; i<x.length; i++){ 53 for(int j=0; j<x[i].length; j++) 54 System.out.print(x[i][j]==0? ' ':x[i][j]); 55 System.out.println(); 56 } 57 } 58 59 private void printInBuf(char[][] buf, int x, int y){ 60 String sv = "" + v; 61 62 int p1 = l==null? x : l.getRootPos(x); 63 int p2 = getRootPos(x); 64 int p3 = r==null? p2 : r.getRootPos(p2+sv.length()); 65 66 buf[y][p2] = '|'; 67 for(int i=p1; i<=p3; i++) buf[y+1][i]='-'; 68 for(int i=0; i<sv.length(); i++) ________________________________; //填空位置 69 if(p1<p2) buf[y+1][p1] = '/'; 70 if(p3>p2) buf[y+1][p3] = '\\'; 71 72 if(l!=null) l.printInBuf(buf,x,y+2); 73 if(r!=null) r.printInBuf(buf,p2+sv.length(),y+2); 74 } 75 76 private int getRootPos(int x){ 77 return l==null? x : x + l.getWidth(); 78 } 79 } 80 81 public class Main 82 { 83 public static void main(String[] args) 84 { 85 BiTree tree = new BiTree(500); 86 tree.add(new BiTree(200)); 87 tree.add(new BiTree(509)); 88 tree.add(new BiTree(100)); 89 tree.add(new BiTree(250)); 90 tree.add(new BiTree(507)); 91 tree.add(new BiTree(600)); 92 tree.add(new BiTree(650)); 93 tree.add(new BiTree(450)); 94 tree.add(new BiTree(510)); 95 tree.add(new BiTree(440)); 96 tree.add(new BiTree(220)); 97 tree.show(); 98 } 99 } 100 101 对于上边的测试数据,应该显示出: 102 | 103 /--------------500---\ 104 | | 105 /--200---\ /--509---\ 106 | | | | 107 100 /--250---\ 507 /--600\ 108 | | | | 109 220 /--450 510 650 110 | 111 440 112 113 (如有对齐问题,请参考【图1.png】) 114 115 请分析程序逻辑,填写划线部分缺失的代码。 116 117 注意,只填写缺少的部分,不要填写已有的代码或符号,也不要加任何说明文字。