数据结构
_Mr.Tree
深入理解
展开
-
求解一个数的二进制中1的数量
假设二进制数是 11(11 & 01) + ((11 >>> 1) & 01) = 01 + 01 = 10 => 2假设二进制数是 1011(1011 & 0101) + ((1011 >>> 1) & 0101) = 0001 + 0101 = 0110 => 整体无意义,结果每两位表示二进制数每两位中1的数量(0110 & 0011) + ((0110 >>> 2) & 0011)原创 2021-10-22 12:57:56 · 133 阅读 · 0 评论 -
迷宫问题-栈
前置条件:在H*W的图中,"S"表示起点,“G"表示终点且从邻近它的上下左右点到达它要花费1,”."表示从邻近它的上下左右点到达它要花费1,“#”表示从邻近它的上下左右点到达它的花费未知。问题:给定S到G的最多花费为T,输出#的最大值,若可为无穷大,则输出-1。输入:第一行H,W,T;接下来输入H*W的地图输出:#的最大值例1输入:2 3 10S##.#G例1输出:8S->.->#->G 有(10-2)/1=8例2输入:2 3 10S##..G例2输出:原创 2021-10-09 10:42:31 · 92 阅读 · 0 评论 -
NC68 跳台阶
NC68 跳台阶递归函数 { 1 n=1f(n) = { 2 n=2 { f(n-1)+f(n-2) n>2递归式,O(2^n) public int jumpFloor(int target) { if(target == 0){ return 1; }else if(target < 0){ return 0;原创 2021-10-04 23:11:06 · 112 阅读 · 0 评论 -
最长递增子序列
最长递增子序列的序列长度dp过程看:Leetcode 300 题 最长递增子序列不用二分查找,时间复杂度是O(n^2)用了二分查找,时间复杂度是O(nlogn)import java.util.*;public class Solution { /** * 最长递增子序列 * @param arr int整型一维数组 the array * @return int整型一维数组 */ public static int[] LIS (int[原创 2021-10-04 10:34:29 · 63 阅读 · 0 评论 -
最长回文子串-最长公共子序列
package arithmetic.dynamicplan;import java.util.Arrays;public class Demo01 { /** * 最长回文串 * L[i,j]表示X[i~j]的最长回文串长度 * L[i,j] = { * 1 i=j * L[i+1,j-1]+2 And{i<j,X[i]=X[j],L[i+1][原创 2021-10-03 13:40:41 · 121 阅读 · 0 评论 -
基础排序算法
一,选择排序1,思想不断的找到数组中最小的元素,往数组前面放。(找第1小的元素放到位置1,找第2小的元素放到位置2,…,第n小的元素放到位置n)2,图解3,实现 /** * 选择排序 * @param arr */ public static void sort(int[] arr){ if(null == arr || arr.length <= 1){ return; } for(int i = 1; i < arr.length;原创 2021-10-01 21:02:18 · 219 阅读 · 0 评论 -
进程调度:时间片轮转+抢占+动态优先级调度算法
时间片轮转:每个进程至多持续运行一定时间。抢占:进程进入就绪队列,进行优先级比较,优先级大的可抢占正在运行的进程。动态优先级:进程进入就绪队列一定时间未获取cpu,则提升优先级。进程类package process;/** * 进程类 */public class Process implements Comparable<Process>{ // 进程标识管理器 private static int processIdManage = 1; //原创 2020-12-09 17:46:08 · 3092 阅读 · 0 评论 -
生成序列
package array;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class GenerateArray { public static void main(String[] args) { createArray(3); } static class Number implements Comparable<Numb原创 2020-10-21 23:58:41 · 607 阅读 · 0 评论 -
银行家算法
封装类:BankArithmeticpackage bank;import java.io.File;import java.io.FileInputStream;import java.util.*;public class BankArithmetic { private static List<Integer> defaultAvailable; private static Map<Integer, List<Integer>> n原创 2020-10-21 23:55:13 · 240 阅读 · 4 评论 -
L3-003 社交集群 (30 分)
方式如下题https://blog.csdn.net/qq_43209531/article/details/89601624原创 2019-10-19 11:09:55 · 183 阅读 · 0 评论 -
L3-002 特殊堆栈 (30 分)
堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整数 N(≤105 )。随后 N 行,每行给出一...原创 2019-10-17 21:51:47 · 1071 阅读 · 0 评论 -
L3-001 凑零钱 (30 分)
韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 104 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。输入格式:输入第一行给出两个正整数:N(≤104 )是硬币的总个数,M(≤102 )是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数...原创 2019-10-14 14:39:15 · 336 阅读 · 0 评论 -
L2-031 深入虎穴 (25 分)
著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫...原创 2019-10-13 19:19:48 · 191 阅读 · 0 评论 -
L2-030 冰岛人 (25 分)
2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:iceland.JPG冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的...原创 2019-10-13 17:36:44 · 435 阅读 · 0 评论 -
7-49 打印学生选课清单 (25 分)
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。输入格式:输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生...原创 2019-05-06 22:39:41 · 1035 阅读 · 0 评论 -
L2-006 树的遍历 (25 分)
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6...原创 2019-08-26 20:45:59 · 884 阅读 · 0 评论 -
L2-005 集合相似度 (25 分)
给定两个整数集合,它们的相似度定义为:Nc /Nt ×100%。其中Nc 是两个集合都有的不相等整数的个数,Nt 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。输入格式:输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤104 ),是集合中元素的个数;...原创 2019-08-26 12:31:48 · 369 阅读 · 1 评论 -
L2-002 链表去重 (25 分)
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105 ,为结点...原创 2019-08-25 13:29:07 · 1532 阅读 · 0 评论 -
L1-050 倒数第N个字符串 (15 分)
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。输入格式:输入在一行中...原创 2019-08-20 15:26:15 · 355 阅读 · 0 评论 -
L1-049 天梯赛座位分配 (20 分)
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的...原创 2019-08-20 15:03:02 · 270 阅读 · 0 评论 -
L1-046 整除光棍 (20 分)
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。...原创 2019-08-19 12:15:37 · 348 阅读 · 0 评论 -
L1-064 估值一亿的AI核心代码 (20 分)
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了 I;把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空...原创 2019-08-18 17:35:36 · 941 阅读 · 1 评论 -
1到20的阶乘之和是多少
注意:由于数据出现溢出,所以要自己实现“*”运算和“+”运算#include<stdio.h>#define MAX_SIZE 3000#define MAX_POS 2999int result[MAX_SIZE]={0},res_begin=MAX_POS;//"+"void Get_Sum(int all[],int begin){ int end=MAX...原创 2019-05-30 18:21:43 · 20699 阅读 · 0 评论 -
7-46 新浪微博热门话题 (30 分)
新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。输入格式:输入说明:输入首先给出一个正整...原创 2019-05-09 22:59:32 · 672 阅读 · 0 评论 -
7-47 打印选课学生名单 (25 分)
假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。输出格式:顺序输出课程1到...原创 2019-05-06 23:41:15 · 934 阅读 · 0 评论 -
L2-007 家庭房产 (25 分)
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:编号 父 母 k 孩子1 … 孩子k 房产套数 总面积其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子...原创 2019-08-27 18:40:23 · 265 阅读 · 0 评论 -
L2-008 最长对称子串 (25 分)
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?输出样例:11注意点:这个题目可以把左边和右...原创 2019-08-27 19:51:09 · 779 阅读 · 1 评论 -
7-9 旅游规划 (25 分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;...原创 2019-04-22 00:22:32 · 2768 阅读 · 4 评论 -
L2-028 秀恩爱分得快 (25 分)
古人云:秀恩爱,分得快。互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框照片对应的亲密度之和。下面给定一批照片,请你分析一对给定的情侣,看看他们分别有没有亲密度更高的异性朋友?输入格式:输入在第一行给出 2 个正整...原创 2019-10-11 12:44:16 · 184 阅读 · 0 评论 -
L2-025 分而治之(25 分)
分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。输入格式:输入在第一行给出两个正整数 N 和 M(均不超过10 000),分别为敌方城市个数(于是默认城市从 1 到 N 编号)和连接两城市的通路条数。随后 M 行,每行给出一条通路所连接的两个...原创 2019-10-03 12:53:47 · 403 阅读 · 0 评论 -
L2-022 重排链表 (25 分)
给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2 →⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤105 )。结点的地址是5位非负整数,NULL地址用−1表示。接下来有N行,每行格式为:...原创 2019-09-17 22:11:58 · 2883 阅读 · 0 评论 -
L2-020 功夫传人 (25 分)
一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。这里我们来考察某一位祖师爷门下的徒子徒孙家谱:假设家谱中的每个人只有1位师傅(除了祖师爷没有师傅);每位师傅可以带很多...原创 2019-09-15 16:33:53 · 382 阅读 · 0 评论 -
L2-018 多项式A除以B (25 分)
这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。输入格式:输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下:N e[1] c[1] … e[N] c[N]其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c[i]是第i个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同...原创 2019-09-04 11:55:10 · 307 阅读 · 1 评论 -
L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤104 ),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如...原创 2019-09-03 12:34:17 · 192 阅读 · 0 评论 -
L2-015 互评成绩 (25 分)
学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。输入格式:输入第一行给出3个正整数N(3 < N ≤104 ,学生总数)、k(3 ≤ k ≤ 10,每份作业的评审数)、M(≤ 20,需要输出的学生数)。随后N行,每行给出一份作业...原创 2019-08-30 15:15:14 · 255 阅读 · 0 评论 -
L2-013 红色警报 (25 分)
战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路...原创 2019-08-29 23:10:58 · 221 阅读 · 0 评论 -
L2-010 排座位 (25 分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系...原创 2019-08-28 14:04:04 · 291 阅读 · 0 评论 -
1块钱可以买一瓶汽水,2个空瓶可以换一瓶,3个瓶盖可以换一瓶,问:20块钱最终可以得到多少瓶?
1块钱可以买一瓶汽水,2个空瓶可以换一瓶,3个瓶盖可以换一瓶,问:20块钱最终可以得到多少瓶?解答:113/** * @param money 钱 * @param empty 空瓶 * @param lid 瓶盖 * @param total 买的瓶数 */private static int buy(int money,int empty,int lid,int total) ...原创 2019-08-27 22:11:56 · 1954 阅读 · 0 评论 -
7-50 畅通工程之局部最小花费问题 (35 分)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第一行给出村庄数目N (1≤N≤100)...原创 2019-05-06 18:07:05 · 263 阅读 · 0 评论 -
7-30 目录树 (30 分)
在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。输入格式:输入首先给出正整数N(≤104 ),表示ZIP归档文件中的文件和目录的数量。随后N行,每行有如下格式的文件或目录的相对路径和名称(每行不超过260个字符):路径和名称中的字符仅包括英文...转载 2019-05-01 15:29:32 · 3876 阅读 · 3 评论