算法题

来源:互联网 发布:沙文主义 知乎 编辑:程序博客网 时间:2024/05/17 09:28

(一)

求由5个不重复的数字组成的任意不重复三位数,编写一个类实现 列举出所有满足条件的三位数。

1.考虑5个数字中不含有0的情况

2.考虑5个数字中含0的情况

3.输出所有满足条件的三位数并且统计个数

4.函数的原型为 function Getenum($data=[]) 

   $data 为传入的数字数组

5.只允许使用count数组函数,其他函数一律不准使用


(二)

随机生成10000个数字(10000-99999之间的数组),把数字分别写入10个文件中,要求每个文件只存1000个数字。每行只存一个数字,给出一个指定的数,判断数字是否在10个文件中。在文件中显示存在,并显示在哪个文件中。


1. 1、 生成10000个不重复的数字组成的数组(30分)
2. 2、 每个文件存1000个数字(20分)
3. 3、 从文件中查找指定的数字(50分,存在不存在30分,具体到文件20分)(不从文件中查找本项不给分)
4. 4、 考虑如何快速查找是否存在该数。
5. 5、 不允许百度,百度一律0分。
2.算母鸡公鸡小鸡的数量 公鸡8元一只  母鸡5元一只  小鸡1元3只  问  100块买100只鸡  都有哪些鸡 不允许百度(思考穷举法的使用)


(三)

1.使用spl标准库,编写出类来实现双向链表增删改查
2.已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。请使用php编写函数模拟整个过程并计算出最后剩余的那个人的编号。


已知青蛙跳台阶有两种方式一种一次跳一级,一种一次跳两级!问当有n级台阶时,青蛙跳到这一级台阶方式有多少种的


(四)

1.把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转,该数组的最小值为1。
2.有两个排好序的数组
$a = [3,7,9,10,21]
$b=[1,5,6,8,12]
请写一个函数实现两个数组的合并,并保持从小到大的顺序排列

(五)

为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1


(六)

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。考虑多对同时满足的情况例如输入数组12471115和数字15。由于4+11=15,因此输出411




原创粉丝点击