清华大学软件2014机试

清华大学软件2014机试

By 钟桓

9月 24 2014 更新日期:9月 24 2014

今天刚刚机试完,乘者还没忘记,把自己知道的记下来,也算是泽被后来人吧~~~

这次的机试题,相对来说,会更简单一点,总共3题,时间是3小时。

1 超级幸运数

题目大致描述:

一个数字,若是只含有1和4,这个数字就是幸运数,例如,14,114。但是514这样的就不是了,因为含有其它数字。 若这个幸运数字中,1和4的数量相同,那么就是超级幸运数,例如14,1144,41等等。

题目要求,输入一个n,n的范围是[1,1e9],输出[1,n]的最大超级幸运数。无解的话,输出-1.

解题思路:

这个题目,当n<14,那么显然是无解的,其余情况,最起码还有14,其实就是当>=14的时候,找一个最大的就好了,那么最大有什么规律,假设输入的n有x位,当位数是奇数的时候,输出(x-1)/2个4,和(x-1)/2个1,就好了。如果位数是偶数的话,那么,要考虑一下一些情况了,因为输出是不能大于n的,并且4和1的个数相等。还有,注意这样的数据1000,它的输出应该是41。

一些测试数据:

in: 20 out:14

in: 10 out: -1

in:1000 out: 41

2 移动小球

有一些小球,1,2,。。。,n;

有两种操作,分别是

  • 1 x y ,把x移动至y的左边
  • 2 x y ,把x移动至y的右边

问得是,m次操作后,小球的顺序是什么..

其实就是这样的,原本1,2,3,4,5.(如果n=5的话)。经过1 1 4操作后,变成2 3 1 4 5

n数据范围[1,1000]

m 数据范围[1,200000]

解题思路:

双向链表就能够解决这个问题。再用一个数组存储这些个节点的位置。

测试数据:

in :

5, 2 (输入是 n m)

1 1 4 (表示操作,1,x, y)

2 4 2

out: 2 4 3 1 5;

3 整理书架

书店管理员要把书架上的书整理一下,其实就是一排书,让书的排序是按照书的高低,每本书有一个重量,重量越大,移动书时越费力,越累,让我们求的是,总的移动书本的最小重量是多少。

给出的数据是:

5(书的数量)

1 2 5 3 3 (表示书的高度)

1 1 3 1 1 (标示书的重量)

输出是2,

为什么是2,因为这里只需要把第4,第5本书移动到第三本书的前面,就能够保证书的有序,移动的重量和是2。

解题思路:

移动的重量和最小,其实就是求,不移动重量和的最大是多少。那么怎么求不移动的最大重量和呢?其实就是记录下每本书的位置,高度,重量,然后按照高度排序,排序完后,按照节点的位置,来求一个最大子序列,不过这个最大子序列,大不在长度上,而是重量和上,这样求出来的最大子序列重量和,就是不移动的最大重量和,总的重量减去它,就是我们要的答案

时间: 2024-10-25 08:42:46

清华大学软件2014机试的相关文章

清华大学软件2016机试

机试完几天了,两个月的准备就是为了这三小时的三道题,趁着没忘记,把题目贡献出来,也算是继承学长的光荣传统,泽被后人吧! 1.大数乘法 先输入一个数字m,表示后面将输入m个数,接着输入m个0到9的数,以空格隔开(至少有一个不为0),这些数可构成一个十进制数a, a的三次方为数b, 求b的各个位的数字,输出时以空格隔开,不要输出多余的空格. 输入示例: 4 1 2 3 4 输出示例: 1 8 7 9 0 8 0 9 0 4 思路:题目不难,用大数乘法做之  2.最短时间 给一个有向图,图的各个顶点的

华为2014机试试题 - 洞穴逃生

精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞.在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴.精灵王子的跑步速度为17m/s,以这样的速度可能无法逃出洞穴.庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.精灵王子的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复. 现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T.你的任务是写一个程序帮

九度oj 题目1084:整数拆分 清华大学2010年机试题目

题目描述: 一个整数总可以拆分为2的幂的和,例如:7=1+2+4 7=1+2+2+2 7=1+1+1+4 7=1+1+1+2+2 7=1+1+1+1+1+2 7=1+1+1+1+1+1+1总共有六种不同的拆分方式. 再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2. 用f(n)表示n的不同拆分的种数,例如f(7)=6.要求编写程序,读入n(不超过1000000),输出f(n)%1000000000. 输入: 每组输入包括一个整数:N(1<=

九度oj 题目1083:特殊乘法 清华大学2010年机试题目

题目描述: 写个算法,对2个小于1000000000的输入,求结果. 特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5 输入: 两个小于1000000000的数 输出: 输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果. 样例输入: 123 45 样例输出: 54 简单题,拿来找手感 1 #include <cstdio> 2 #include <cstring> 3 4 char a[12

2014年七月华为校招机试题目--最难的一道, 呵呵!

今天百无聊赖之时, 漫心看到14年的华为校招机试题目, 一共三道, 前两道皆是平平, 第三道却柳暗花明, 让人眼前一亮. 咋一看, 饶有趣味, 看似平淡无奇, 然而却玄机颇深(对我这种弱渣而言).(不过对于ACMer, 好像应该用基础算法, 就能解决!) (然而我也只会基础的算法!!忏愧的紧!!!).如果有幸被大神看到, 能指点我一两招, 不胜感激!  下面是题目和我的详细题解思路(可供巨巨一笑!嘿嘿!). 2014年七月华为校招机试题目: 第三题: 输入一个正整数X,在下面的等式左边的数字之间

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

2014年6月6日--华为机试

准备了还有一段时间了,结果还是悲剧了,主要准备的是算法,结果华为机试更看重字符串的操作,这一块正好是自己的弱项,哎.不过还有时间,这几个月多刷刷题,多锻炼锻炼,加油吧. 机试一共考了三道题,两道简单点的,一道难题,难题考得是状态机,不知道是什么东西╮(╯▽╰)╭,简单的两题做的也不好,回来在重新做一下.   1.倒置英文句子中单词的字母顺序. hello, I am good.  ->  olleh, I ma doog. 这题其实不难,当时脑子有点纠结符号,所以没做出来,还有一点客观原因,平时

2014华为机试西安地区A组试题

2014华为机试西安地区A组试题 题目一.分苹果 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放. 1<=M<=10,1<=N<=10 例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法 输入 7 3 输出 8 题目分析: 这道题类似于整数划分的题目,这是很早的一道ACM的题目,主要思路就是考递归. ①当苹果数目或者篮子数目为1时候,就只有一种可能 ②当苹果数目小于篮子数目的时候,按照苹果数目来分配 ③当苹果数目大于篮子数目的时候,空一个盘子 + 先每个盘子放

2014深圳华为机试剖析

题一: (1)给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况.最大递减数:所输入整数的所有递减数中值最大的一个. 如: 75345323,递减数有:75,753,53,53,532,32.那么最大的递减数为753. 各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7