目录

1 数组转置

2 文件管理

3 显示为树形

4 杨辉三角系数

5 圆周率与级数

6 整数翻转

7 自行车行程

8 祖冲之割圆法

9 最大5个数

10 最大镜像子串

 


1 数组转置

    编写程序将2行3列的数组行列置换复制给3行2列的数组(即数组的转置)。已经写了如下代码,请完善之:

class  y{
public static void main(String[] args) throws Exception {
int a[][]={{1,2,3},{4,5,6}};
int b[][]=new int[3][2];
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
_____________________;
}
}
}
} b[j][i] = a[i][j]

2 文件管理

    显示“DaSai”目录下以”Ex”开头的文件和目录,写了如下代码,请完善之:

import java.io.*;
class JavaFilter implements FilenameFilter{
String jf;
JavaFilter(String s){
jf=s;
}
//实现FilenameFilter接口的accept()方法
public boolean accept(File dir,String name){
return name.startsWith(jf);//name的前缀是否是参数jf
}
}
public class Ex{
public static void main(String[] args) throws Exception {
File f=new File("/DaSai");
//过滤以“Ex”开头的文件和目录,存放到字符串数组s中。
String s[]=____________________________;
for(int i=0;i<s.length;i++){
File ff=new File(s[i]);// 根据s[i]创建File类对象
if(ff.isDirectory())
System.out.println(s[i]+" is a directory");
else
System.out.println(s[i]+" is a file");
}
}
} f.list(new JavaFilter("Ex"))

3 显示为树形

树形结构应用十分广泛。

下面这段代码根据用户添加的数据,在内存中构建一个逻辑上等价的树形结构。

通过ShowTree() 可以把它显示为控制中的样子。

其中:
a.add('a', 'b');
a.add('b', 'e');
表示:'b' 作为 'a' 的孩子节点;'e' 作为 'b'的孩子节点。
如代码中给出的示例数据,输出结果应该为: a--b--e
| |--f--j
| |--k
|--c
|--d--g--h
|--i 请阅读下面的代码,填写缺失的部分(下划线部分)。 注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。 import java.util.*; class MyTree
{
private Map map = new HashMap(); public void add(char parent, char child)
{
List<Character> t = (List<Character>)map.get(parent);
if(t==null)
{
t = new Vector<Character>();
____________________; // 填空1
}
t.add(child);
} public List<Character> getChild(char x)
{
return (List<Character>)map.get(x);
}
} public class My
{
public static List<String> showTree(MyTree tree, char x)
{
List<Character> t = tree.getChild(x); List<String> r = new Vector<String>(); if(t==null)
{
r.add("" + x);
return r;
} for(int i=0; i<t.size(); i++)
{
List<String> ri = showTree(tree, t.get(i));
for(int j=0; j<ri.size(); j++)
{
String pre = "| ";
if(j==0)
{
if(i==0)
pre = x + "--";
else
pre = "|--";
}
else
{
if(i==__________________) // 填空2
pre = " ";
else
pre = "| ";
} r.add(pre + ri.get(j));
}
} return r;
} public static void main(String[] args)
{
MyTree a = new MyTree();
a.add('a', 'b');
a.add('b', 'e');
a.add('b', 'f');
a.add('a', 'c');
a.add('a', 'd');
a.add('d', 'g');
a.add('d', 'i');
a.add('g', 'h');
a.add('f', 'j');
a.add('f', 'k'); List<String> lst = showTree(a, 'a');
for(int i=0; i<lst.size(); i++)
{
System.out.println(lst.get(i));
}
}
} map.put(parent, t)
i
== t.size()-1

4 杨辉三角系数

    (a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:

                 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。 public static int f(int m, int n)
{
if(m==0) return 1;
if(n==0 || n==m) return 1;
return __________________________;
} f(m - 1, n - 1) + f(m - 1, n)

5 圆周率与级数

圆周率

我国古代数学家对圆周率方面的研究工作,成绩是突出的。三国时期的刘徽、南北朝时期的祖冲之都在这个领域取得过辉煌战绩。
有了计算机,圆周率的计算变得十分容易了。如今,人们创造了上百种方法求π的值。其中比较常用且易于编程的是无穷级数法。
π/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 - …
是初学者特别喜欢的一个级数形式,但其缺点是收敛太慢。
π/2 = 1 + 1/3 +1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9 + …
是收敛很快的一个级数方法。下面的代码演示了用这种方法计算π值。请填写缺失的代码部分。把填空的
答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。 double x = 1;
double y = 1;
int a = 1;
int b = 3; while(y>1e-15)
{
y = __________;
x += y;
a++;
b += 2;
} System.out.println(x*2); y * a / b

6 整数翻转

    以下程序把一个整数翻转(8765变为:5678),请补充缺少的代码。

        int n = 8765;
int m = 0;
while(n>0)
{
m = ________________________;
n = n / 10;
}
System.out.println(m); m * 10 + n % 10

7 自行车行程

计算行程

低碳生活,有氧运动。骑自行车出行是个好主意。小明为自己的自行车装了个计数器,可以计算出轮子转动的圈数。在一次骑车旅行中,出发时计算器的示数为begin,到达目的地时的示数为end。下列代码计算了小明一共骑行了多远(单位:公里)。其中d表示小明自行车轮子的直径(单位:米)。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

    public static double getDistance(int begin, int end, double d)
{
return (end-begin) * Math.PI * d _________;
} /1000

8 祖冲之割圆法

    南北朝时,我国数学家祖冲之首先把圆周率值

计算到小数点后六位,比欧洲早了1100年!他采

用的是称为“割圆法”的算法,实际上已经蕴含

着现代微积分的思想。

    如图【1.jpg】所示,圆的内接正六边形周长

与圆的周长近似。多边形的边越多,接近的越好

!我们从正六边形开始割圆吧。

    如图【2.jpg】所示,从圆心做弦的垂线,可

把6边形分割为12边形。该12边形的边长a'的计

算方法很容易利用勾股定理给出。之后,再分割

为正24边形,....如此循环会越来越接近圆周。

    之所以从正六边开始,是因为此时边长与半径

相等,便于计算。取半径值为1,开始割圆吧!

    以下代码描述了割圆过程。

    程序先输出了标准圆周率值,紧接着输出了不

断分割过程中多边形边数和所对应的圆周率逼近

值。

public class B21
{
public static void main(String[] args)
{
System.out.println("标 准 " + Math.PI); double a = 1;
int n = 6; for(int i=0; i<10; i++)
{
double b = Math.sqrt(1-(a/2)*(a/2));
a = Math.sqrt((1-b)*(1-b) + (a/2)*(a/2)); n = ______________; //填空 System.out.println(n + " " + _______________); // 填空
}
}
} 请分析代码逻辑,并推测划线处的代码。 答案写在 “解答.txt” 文件中 注意:只写划线处应该填的内容,划线前后的内 容不要抄写。 n * 2
a / 2 *
n 标准 3.141592653589793
12 3.105828541230249
24 3.1326286132812378
48 3.1393502030468667
96 3.14103195089051
192 3.1414524722854624
384 3.141557607911858
768 3.1415838921483186
1536 3.1415904632280505
3072 3.1415921059992717
6144 3.1415925166921577

9 最大5个数

    [12,127,85,66,27,34,15,344,156,344,29,47,....]  

    这是某设备测量到的工程数据。

    因工程要求,需要找出最大的5个值。

    一般的想法是对它排序,输出前5个。但当数据较多时,这样做很浪费时间。因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5个数字,也并不要求按大小顺序,只要找到5个就可以。

    以下的代码采用了另外的思路。考虑如果手里已经抓着5个最大数,再来一个数据怎么办呢?让它和手里的数据比,如果比哪个大,就抢占它的座位,让那个被挤出来的再自己找位子,....

import java.util.*;
public class B23
{
public static List<Integer> max5(List<Integer> lst)
{
if(lst.size()<=5) return lst; int a = _______________________; // 填空
List<Integer> b = max5(lst); for(int i=0; i<b.size(); i++)
{
int t = b.get(i);
if(a>t)
{
__________________; // 填空
a = t;
}
} return b;
} public static void main(String[] args)
{
List<Integer> lst = new Vector<Integer>();
lst.addAll(Arrays.asList(12,127,85,66,27,34,15,344,156,344,29,47));
System.out.println(max5(lst));
}
} 请分析代码逻辑,并推测划线处的代码。 答案写在 “解答.txt” 文件中 注意:只写划线处应该填的内容,划线前后的内容不要抄写。 lst.remove(0)
lst.set(i, a) 或者 b.set(i, a)

10 最大镜像子串

【代码填空】(满分12分)

    串“abcba”以字母“c”为中心左右对称;串“abba” 是另一种模式的左右对称。这两种情况我们都称这个串是镜像串。特别地,只含有1个字母的串,可以看成是第一种模式的镜像串。 

    一个串可以含有许多镜像子串。我们的目标是求一个串的最大镜像子串(最长的镜像子串),如果有多个最大镜像子串,对称中心靠左的优先选中。例如:“abcdeefghhgfeiieje444k444lmn”的最大镜像子串是:“efghhgfe”

    下面的静态方法实现了该功能,请仔细阅读并分析代码,填写空白处的代码,使得程序的逻辑合理,结果正确。

// 求最大(长度最大)镜像对称子串
public static String getMaxMirrorString(String s)
{
String max_s = ""; // 所求的最大对称子串 for(int i=0; i<s.length(); i++)
{
// 第一种对称模式
int step = 1;
try{
for(;;)
{
if(s.charAt(i-step) != s.charAt(i+step)) break;
step++;
}
}catch(Exception e){} String s1 = s.substring(_____________________________); // 填空1 // 第二种对称模式
step = 0;
try{
for(;;)
{
if(_________________________________) break; // 填空2
step++;
}
}catch(Exception e){} String s2 = s.substring(i-step+1,i+step+1); if(s1.length() > max_s.length()) max_s = s1;
if(s2.length() > max_s.length()) max_s = s2;
} return max_s;
} 【注意】
只填写缺少的部分,不要抄写已有的代码。
所填写代码不超过1条语句(句中不会含有分号)
所填代码长度不超过256个字符。
答案写在“解答.txt”中,不要写在这里! i - step + 1, i + step
s.charAt(i - step) != s.charAt(i + step + 1)

算法笔记_116:算法集训之代码填空题集三(Java)的更多相关文章

  1. 算法笔记_115:算法集训之代码填空题集二(Java)

     目录 1 连续数的公倍数 2 孪生素数 3 迷宫走法 4 拍7游戏 5 排列为平方数 6 平面点最小距离 7 扑克牌排列 8 三进制转十进制 9 识别复制串 10 蔬菜价格计算   1 连续数的公倍 ...

  2. 算法笔记_113:算法集训之代码填空题集一(Java)

     目录 1 报数游戏 2 不连续处断开 3 猜数字游戏 4 串的反转 5 串中找数字 6 递归连续数 7 复制网站内容 8 股票的风险 9 基因牛的繁殖 10 括号的匹配   1 报数游戏 有n个孩子 ...

  3. 算法笔记_117:算法集训之结果填空题集一(Java)

     目录 1 空瓶换汽水 2 三人年龄 3 考察团组成 4 微生物增殖 5 除去次方数 6 正六面体染色 7 古堡算式 8 海盗比酒量 9 奇怪的比赛 10 土地测量   1 空瓶换汽水 浪费可耻,节约 ...

  4. 算法笔记_118:算法集训之结果填空题集二(Java)

     目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串   1 欧拉与鸡蛋 大数 ...

  5. YTU 2607: A代码填空题--更换火车头

    2607: A代码填空题--更换火车头 时间限制: 1 Sec  内存限制: 128 MB 提交: 91  解决: 73 题目描述 注:本题只需要提交填写部分的代码,请按照C++方式提交. 假设火车有 ...

  6. java算法集训代码填空题练习3

    1 数组转置 编写程序将2行3列的数组行列置换复制给3行2列的数组(即数组的转置).已经写了如下代码,请完善之: class y{ public static void main(String[] a ...

  7. 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)

    Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...

  8. 算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答

     目录 1 熊怪吃核桃 2 星系炸弹 3 九数分三组 4 循环节长度 5 打印菱形 6 加法变乘法 7 牌型种数 8 移动距离 9 垒骰子 10 灾后重建   前言:以下试题解答代码部分仅供参考,若有 ...

  9. 算法笔记_041:寻找和为定值的多个数(Java)

    目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题 ...

随机推荐

  1. json_decode转码无效

    由于最近从原来常用的utf-8的字符转到了gbk:所以,在用json_decode的时候遇到了返回为空: 经查找发现是json_decode和json_encode只针对utf8字符串有效: 于是用到 ...

  2. Linux命令之find(二)

    接上一篇Linux命令之find(一) (1).实例 1.列出当前目录下及子目录下所有的.txt文件 [xf@xuexi ~]$ ls 1.txt 3.txt b.txt 公共 视频 文档 音乐 2. ...

  3. EasyUI学习总结(五)——EasyUI组件使用(转载)

    本文转载自:http://www.cnblogs.com/xdp-gacl/p/4084520.html 一.EasyUI组件的简单介绍 easyUI提供了很多组件让我们使用,如下图所示:

  4. [BZOJ4304]/[JZOJ3486]道路改建

    题目大意: 给你一个有向图,你可以把其中某一条单向边改成双向边,使得图中最大的SCC最大. 问SCC最大能是多少,有哪些方案? 思路: 对原图缩点后就变成了一个DAG. 我们在DAG上DP,记录一下从 ...

  5. Spring中与Spring相关的注解

    # 一.Spring的常用组件类注解 ## @Component     被该注解所修饰的类是一个普通的spring bean类,该注解可以替代@Controller.@Service.@Reposi ...

  6. 21点游戏java实现

    21点的基本知识 21点是世界上比较流行的扑克游戏项目 除掉大小王的一副扑克牌,共计52张牌 21点不区分花色,其中A----10均代表扑克牌本身的点数J Q K代表10点 区分庄家和闲家,其中闲家可 ...

  7. [转]Spring Security 可动态授权RBAC权限模块实践

    RBAC:基于角色的访问控制(Role-Based Access Control) 先在web.xml 中配置一个过滤器(必须在Struts的过滤器之前) <filter> <fil ...

  8. opensuse个人初始化

    Auth: jin Date: 20140414 sourcedir=/mnt/shelldir=/home/shell/userdir= /home/jin#mount /dev/sdb1 /mnt ...

  9. MYSQL复习笔记1-物理文件和系统架构

    date:20140101auth:Jin 一.物理组成(一) 日志文件参考:http://dev.mysql.com/doc/refman/5.1/en/server-logs.html1.错误日志 ...

  10. 一种计算MD5的实现方法

    1.在需要用到加密的地方可以使用.net中的md5相关的类生成md5给文件加密. 2.基本思路: 将文件也好,字符串也好,转成字节数组,再利用.net的md5相关类生成md5相关字符串,再将字符串转成 ...