深圳大鹏住房和建设局网站,建设网站培训的ppt,品牌营销推广要怎么做,成都广告公司招聘广告制作安装#x1f389;#x1f389;#x1f389;点进来你就是我的人了博主主页#xff1a;#x1f648;#x1f648;#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔#x1f93a;#x1f93a;#x1f93a; 目录
一、选择题
二、编程题 #x1f525;汽水瓶 … 点进来你就是我的人了博主主页戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔 目录
一、选择题
二、编程题 汽水瓶 查找两个字符串a,b中的最长公共子串 一、选择题
1、下列关于线性链表的叙述中正确的是 。 A 各数据结点的存储空间可以不连续但它们的存储顺序与逻辑顺序必须一致 B 各数据结点的存储顺序与逻辑顺序可以不一致但它们的存储空间必须连续 C 进行插入与删除时不需要移动表中的元素 D 以上说法均不正确正确答案 C 参考答案 一般来说在线性表的链式存储结构中各数据结点的存储序号是不连续的并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素只需改变结点的指针域即可。2、一个栈的初始状态为空。现将元素1,2,3,A,B,C 依次入栈然后再依次出栈则元素出栈的顺序是 A 1,2,3,A,B,C B C,B,A,1,2,3 C C,B,A,3,2,1 D 1,2,3,C,B,A正确答案 C 参考答案 栈的修改是按后进先出的原则进行的所以顺序应与入栈顺序相反故选 C 。3、下列数据结构中不能采用顺序存储结构的是 A 非完全二叉树 B 堆 C 队列 D 栈正确答案 A 参考答案 根据完全二叉树的性质 6 满二叉树和完全二叉树可以按层序进行顺序存储但一般的二叉树不适用。堆可以用一维数组来存储也可以用完全二叉树来直观地表示堆的结构。队列、栈本身就是顺序存储的。故本题答案为 A 选项。4、递归函数最终会结束那么这个函数一定 A 使用了局部变量 B 有一个分支不调用自身 C 使用了全局变量或者使用了一个或多个参数 D 没有循环调用正确答案 B 参考答案 直接排除AD注意力集中在B和C。 B肯定是对的只有一次循环满足某个条件不调用自己就返回递归才会一层一层向上返回。 那么C呢想一下全局变量和参数确实可以用来控制递归的结束与否。 该不该选C呢再仔细看一下题目说实话我很讨厌这种文字游戏“这个函数一定…“所以问题集中在是否是一定会使用这两种方式呢 显然不是的。 除了C中提到的两种情况外还有如下控制递归的方式
局部静态变量是可以控制递归函数最终结束的 2. 可能通过异常来控制递归的结束。 3. 可以利用BIOS或OS的一些数据或一些标准库的全局值来控制递归过程的终止。 4. 可以把一些数据写入到BIOS或OS的系统数据区也可以把数据写入到一个文件中以此来控制递归函数的终止。所以答案为B5、已知二叉树后序遍历序列是bfegcda中序遍历序列是badefcg它的前序遍历序列是 A abcdefg B abdcefg C adbcfeg D abecdfg正确答案 B 参考答案 分析很有代表性的一道题目去年参加微软笔试的时候也有类似的题目。后序遍历中的最后一个元素是根节点a然后查找中序中a的位置把中序遍历分成badefcg易知左子树为b右子树为defcg再递归求解可画出原始二叉树故知前序遍历序列为B。6、某完全二叉树按层次输出同一层从左到右的序列为 ABCDEFGH 。该完全二叉树的前序序列为 A ABDHECFG B ABCDEFGH C HDBEAFCG D HDEBFGCA正确答案 A 参考答案 前序遍历访问根结点在访问左子树和访问右子树之前。即先访问根结点然后遍历左子树最后遍历右子树并且在遍历左子树和右子树时仍然先访问根结点然后遍历左子树最后遍历右子树。 中序遍历访问根结点在访问左子树和访问右子树两者之间。即先遍历左子树然后访问根结点最后遍历右子树。并且在遍历左子树和右子树时仍然首先遍历左子树然后访问根结点最后遍历右子树。 后序遍历访问根结点在访问左子树和访问右子树之后。即首先遍历左子树然后遍历右子树最后访问根结点并且在遍历左子树和右子树时仍然首先遍历左子树然后遍历右子树最后访问根结点。 完全二叉树是指除最后一层外每一层上的结点数均达到最大值在最后一层上只缺少右边的若干结点。 因此此完全二叉树可能的形状为 则前序遍历序列为 ABDHECFG 。故本题答案为 A 选项。7、以下序列不是堆的是() A (100,85,98,77,80,60,82,40,20,10,66) B (100,98,85,82,80,77,66,60,40,20,10) C (10,20,40,60,66,77,80,82,85,98,100) D (100,85,40,77,80,60,66,98,82,10,20)正确答案 D 最大堆根节点左右孩子 最小堆根节点左右孩子8、设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造哈希表,哈希函数为H(key)key MOD 13,哈希地址为1的链中有()个记录 A 1 B 2 C 3 D 4正确答案 D9、假设你只有100Mb的内存需要对1Gb的数据进行排序最合适的算法是 A 归并排序 B 插入排序 C 快速排序 D 冒泡排序正确答案 A 外部排序:内存中放不下所有要排序的数据需要借助外部空间(磁盘)进行排序 多路归并排序。 1GB分为大小相等的20份每份大 然后在外部空间进行 小为50MB依次将每份数据读入内存中进 这20份的归并过程 行排序(内部排序:快排等)10、某系统总体结构如下图所示, 该系统结构图的深度是 A 4 B 3 C 2 D 1正确答案 A 参考答案 系统结构图的深度是指表示控制的层数。从图中可见该系统结构的深度为 4 层。故本题答案为 A 选项。 二、编程题 汽水瓶 汽水瓶_牛客题霸_牛客网 import java.util.*;
public class Main{public static int getNum(int num){
//累加汽水的个数int sum 0;
//while(num 0) 死循环while(num 1){
//兑换的汽水的个数 /3sum num / 3;
//剩余的空瓶子 /3 %3num num / 3 num % 3;if(num 2){
//借一瓶sum;break;}}return sum;}public static void main(String[] args){Scanner s new Scanner(System.in);int num;while((num s.nextInt()) ! 0){System.out.println(getNum(num));}}
}查找两个字符串a,b中的最长公共子串
查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网 【解题思路】 本题需要用动态规划求解MCS[i][j]记录短字符串 s1 前 i 个字符和长字符串 s2 前 j 个字符的最长子串的长度初始化所有值为 0。当 s1[i-1] s2[j-1]时MCS[i][j] MCS[i - 1][j - 1] 1这里使用一个额外的值start 来记录最长子串在短字符串 s1 中出现的起始位置maxlen记录当前最长子串的长度当MCS[i][j] maxlen 时maxlen MCS[i][j] 则start i - maxlen 档s1[i-1] ! s2[j-1]时不需要任何操作最后获取substr(start, maxlen)即为所求。 import java.io.*;
import java.util.*;public class Main{//假设str1长度短public static String getMaxSubstr(String str1, String str2){char[] arr1 str1.toCharArray();char[] arr2 str2.toCharArray();int len1 arr1.length;int len2 arr2.length;//最长子串的起始位置int start 0;//最长子串的长度int maxLen 0;//多增加一行一列作为辅助状态//状态 以a的第i个字符结尾和以b的第j个字符结尾的最长公共子串的长度int[][] maxSubLen new int[len1 1][len2 1];for(int i 1; i len1; i){for(int j 1; j len2; j){//如果第i个字符和第j个字符相等则进行累加if(arr1[i - 1] arr2[j - 1]){maxSubLen[i][j] maxSubLen[i - 1][j - 1] 1;//更新if(maxLen maxSubLen[i][j]){maxLen maxSubLen[i][j];start i - maxLen;}}}}return str1.substring(start, start maxLen);}public static void main(String[] args) throws Exception{BufferedReader reader new BufferedReader(new InputStreamReader(System.in));String str1;String str2;while((str1 reader.readLine()) ! null){str2 reader.readLine();if(str1.length() str2.length()){System.out.println(getMaxSubstr(str1, str2));}else{System.out.println(getMaxSubstr(str2, str1));}}}}