ACM
文章平均质量分 67
Donald-Hu
程序猿~
展开
-
八大排序算法--堆排序
描述堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。Python代码实现原创 2016-08-05 17:26:22 · 274 阅读 · 0 评论 -
生理周期
题目描述人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰原创 2016-07-31 15:54:53 · 417 阅读 · 0 评论 -
约瑟夫问题
题目描述约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。输入每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 输出对于每行输入数据(最后一行原创 2016-07-31 15:54:10 · 805 阅读 · 0 评论 -
身份证校验
题目描述我国国标〖GB 11643-1999〗中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。其校验码(最后一位)计算方法和步骤为:(1)十七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和原创 2016-07-31 15:53:15 · 523 阅读 · 0 评论 -
说反话
题目描述给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出每个测试用例的输出占一行,输出倒序后的句子。样例输入Hel原创 2016-07-31 15:51:47 · 396 阅读 · 0 评论 -
锤子剪刀布
题目描述大家应该都会玩“锤子剪刀布”的游戏。现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入输入第1行给出正整数N(5),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。输出输原创 2016-07-31 15:50:54 · 356 阅读 · 0 评论 -
挖掘机技术哪家强
题目描述为了用事实说明挖掘机技术到底哪家强,组织一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。输出在一行中给出总得分最高的学校的编号、及其总分,中间以原创 2016-07-31 15:50:08 · 708 阅读 · 0 评论 -
到底买不买
题目描述小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全原创 2016-07-31 15:49:21 · 304 阅读 · 0 评论 -
成绩大排队
题目描述读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩其中姓名和学号均为不超过10个字符的字符串,成绩为0到1原创 2016-07-31 15:47:49 · 318 阅读 · 0 评论 -
数码管
题目描述液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即7有3笔,8有7笔等。对于十个数字一种排列,要做到两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如 7→3是允许的,7→2不允许。任意输入一组数,判断是否符合上述规则,注意,1在右边。 输入每行输入一个0~9的排列,数字之间用空格分隔,以-1作为输入结束原创 2016-07-31 15:42:30 · 1135 阅读 · 1 评论 -
多项式加法
题目描述一个多项式可以表示为一组数对,数对中第一个数始终为整数,且唯一,表示多项式的次数,另一数表示为对应的系数且不为0。输入两组数对,每组以0 0作为结束,实现对两个多项式的加法并按降幂输出结果数对输入每行输入一个数对,以空格为分隔符,以0 0结束输出每行输出一个数对,以空格为分隔符样例输入5 123 81 215 50 1原创 2016-07-31 15:43:41 · 2129 阅读 · 0 评论 -
选美比赛
题目描述在选美大奖赛的半决赛现场,有n名选手(2选手数量: 7选手得分: 5,3,4,7,3,5,6宣布名次: 3,5,4,1,5,3,2请编程帮助大奖赛组委会完成半决赛的评分排名工作。输入选手数量:7 选手得分:5 3 4 7 3 5 6输出选手的排名:3 5 4 1 5 3 2样例输入7原创 2016-07-31 15:41:49 · 1314 阅读 · 0 评论 -
写出来吧
题目描述读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。样例输入1234567890987654321123456789样例输出原创 2016-07-31 15:40:57 · 422 阅读 · 0 评论 -
日历问题
题目描述在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。输入输入包含若干行,每行包含一个正整数,表示从2原创 2016-07-31 15:55:48 · 626 阅读 · 0 评论 -
字符串匹配问题
题目描述给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏原创 2016-07-31 15:58:50 · 637 阅读 · 0 评论 -
八大排序算法--归并排序
描述归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和原创 2016-08-05 17:31:47 · 277 阅读 · 0 评论 -
八大排序算法--基数排序
描述基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排原创 2016-08-05 17:36:00 · 342 阅读 · 0 评论 -
15道简单算法题
1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素;2:合并两个单链表;3:倒序打印一个单链表;4:给定一个单链表的头指针和一个指定节点的指针,在O(1)时间删除该节点;5:找到链表倒数第K个节点;6:反转单链表;7:通过两个栈实现一个队列;8:二分查找;9:快速排序;10:获得一个int型转载 2016-08-02 23:47:27 · 393 阅读 · 0 评论 -
八种排序算法 Java、Python、C++实现 -- 插入排序
Python实现代码:def insert_sort(lists): # 插入排序 count = len(lists) for i in range(1, count): key = lists[i] j = i - 1 while j >= 0: if lists[j] > key:原创 2016-08-04 11:04:56 · 354 阅读 · 0 评论 -
八大排序算法 Java、Python、C++实现 -- 希尔排序
描述希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。def shell_sort(原创 2016-08-04 11:07:21 · 754 阅读 · 0 评论 -
八大排序算法 Java、Python、C++实现 -- 冒泡排序
描述它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。python代码:def bubble_sort(lists): # 冒泡排序 count = len(lists) for i in range(0, count): for原创 2016-08-05 17:05:43 · 247 阅读 · 0 评论 -
八大排序算法Java、Python、C++实现 -- 快速排序
描述通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。python代码:def quick_sort(lists, left, right): # 快速排序 if left >= right:原创 2016-08-05 17:14:45 · 333 阅读 · 0 评论 -
八大排序算法--直接选择排序
描述基本思想:第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。Python代码实现: def select_sort(lists): # 选择排原创 2016-08-05 17:23:22 · 306 阅读 · 0 评论 -
找出直系亲属
题目描述 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A,B是C的(外)曾祖父,曾祖母,则A,B是C的great-grandparent,C是A,B的great-grandchild,之后再多一辈,则在关系上加一个great-。输入原创 2016-07-31 15:12:34 · 553 阅读 · 0 评论 -
The Most Important Algorithms
原文转载:http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.htmlAfter a long discussion with some of my RISC colleagues about what the 5 most important algorithms on the world are, we couldn't re转载 2016-08-02 09:48:31 · 351 阅读 · 0 评论 -
相邻数对问题
题目描述给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。评测用例规模与约定 1输入输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。输出输出一个整数,表示值正好相差1的数对的个数。样例输入6 10 2 6 3 7 8样例输出3提示样例说明 值正好相差1的数对包括(2,原创 2016-07-31 16:00:22 · 1675 阅读 · 1 评论 -
画图
题目描述在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次原创 2016-07-31 15:59:25 · 311 阅读 · 0 评论 -
A+B和C比大小
题目描述给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入输入第1行给出正整数T(输出对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。样例输入41 2 32 3 42147483647 0 21原创 2016-07-31 15:40:14 · 897 阅读 · 0 评论 -
部分A+B
题目描述正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6;给定A = 3862767,DA = 1,则A的“1部分”PA是0,因为A中有0个1。现给定A、DA、B、DB,请编写程序计算PA + PB。输入输入在一行中依次给出A、DA、B、原创 2016-07-31 15:39:32 · 495 阅读 · 0 评论 -
组个最小数
题目描述给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。输入每个输入包含1个测试用例。每个测试用例在一行中给出多个(不超过50个)数字(0~9之间),整数间用原创 2016-07-31 15:10:20 · 863 阅读 · 0 评论 -
魔咒词典
题目描述 哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。 给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词原创 2016-07-31 15:14:46 · 604 阅读 · 0 评论 -
小A的计算器
题目描述以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。你能帮小A实现这个计算器吗?输入输入的第一行包括一个整数N(1接下来的N行每行包括两个26进制数x和y,它们之间用空格隔开,每个数的位数最多为10位,原创 2016-07-31 15:15:45 · 1067 阅读 · 0 评论 -
最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入每个测试案例包括2行:第一行为2个整数n,k(1第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。输出对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。样例输原创 2016-07-31 15:19:26 · 341 阅读 · 0 评论 -
愚人节的礼物
题目描述四月一日快到了,Vayko 想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko 为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。用()表示一个盒子,B表示礼物,Vayko 想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。输入本题目包含多组测试,请处理到原创 2016-07-31 15:20:18 · 373 阅读 · 0 评论 -
绩点计算
题目描述学校对本科生的成绩施行绩点制(GPA)。将学生的实际考分根据不同学科的不同学分按一定的公式进行计算。规定如下:实际成绩 绩点90-100 4.085-89 3.782-84 3.378-81 3.075-77 2.772-74原创 2016-07-31 15:21:25 · 2935 阅读 · 0 评论 -
金币
题目描述 国王为他的忠诚的骑士支付金币。在他服役的第一天,骑士收到一枚金币。在接下来2天(第二天和第三天的服务),骑士每天收到2金币。在未来三天(第五,第四,和第六天的服务),骑士每天收到三金币。在未来四天(第七,第八,第九,和第十天的服务),骑士每天收到四金币。这一模式的付款方式将继续下去:在接下来的n天骑士每天将收到n枚金币,而在接接下来的n+1天每天将收到n+1枚金币,这里n是正整数原创 2016-07-31 15:22:20 · 700 阅读 · 0 评论 -
最简单的计算机
题目描述一个名叫是 PigHeadThree 的研究组织设计了一台实验用的计算机,命名为 PpMm。PpMm只能执行简单的六种命令 A,B,C,D,E,F;只有二个内存 M1,M2;三个寄存器 R1,R2,R3。六种命令的含义如下:命令 A:将内存 M1 的数据装到寄存器 R1 中;命令 B:将内存 M2 的数据装到寄存器 R2 中;命令 C:将寄存器 R3 的数据装到内存 M原创 2016-07-31 15:26:59 · 607 阅读 · 0 评论 -
相同生日
题目描述在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生。输入第一行为整数n,表示有n个学生,n输出对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输原创 2016-07-31 15:09:37 · 4521 阅读 · 0 评论 -
A除以B
题目描述本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入输入在1行中依次给出A和B,中间以1空格分隔。输出在1行中依次输出Q和R,中间以1空格分隔。样例输入123456789050987654321 7样例输出17636684150原创 2016-07-31 15:38:57 · 821 阅读 · 0 评论 -
个位数统计
题目描述给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0i<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出对N中每一种不同的原创 2016-07-31 15:37:59 · 403 阅读 · 0 评论