算法分析与设计题.docx

上传人:b****3 文档编号:10974879 上传时间:2023-05-28 格式:DOCX 页数:17 大小:36KB
下载 相关 举报
算法分析与设计题.docx_第1页
第1页 / 共17页
算法分析与设计题.docx_第2页
第2页 / 共17页
算法分析与设计题.docx_第3页
第3页 / 共17页
算法分析与设计题.docx_第4页
第4页 / 共17页
算法分析与设计题.docx_第5页
第5页 / 共17页
算法分析与设计题.docx_第6页
第6页 / 共17页
算法分析与设计题.docx_第7页
第7页 / 共17页
算法分析与设计题.docx_第8页
第8页 / 共17页
算法分析与设计题.docx_第9页
第9页 / 共17页
算法分析与设计题.docx_第10页
第10页 / 共17页
算法分析与设计题.docx_第11页
第11页 / 共17页
算法分析与设计题.docx_第12页
第12页 / 共17页
算法分析与设计题.docx_第13页
第13页 / 共17页
算法分析与设计题.docx_第14页
第14页 / 共17页
算法分析与设计题.docx_第15页
第15页 / 共17页
算法分析与设计题.docx_第16页
第16页 / 共17页
算法分析与设计题.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

算法分析与设计题.docx

《算法分析与设计题.docx》由会员分享,可在线阅读,更多相关《算法分析与设计题.docx(17页珍藏版)》请在冰点文库上搜索。

算法分析与设计题.docx

算法分析与设计题

算法设计与分析期末综合实验试题清单

分治与递归

1-1合并排序

问题描述:

给定n个整数,利用合并排序思想将其调整成单调序列。

输入:

整数的个数n,以及n个整数

输出:

从大到小排序的n个整数(或从小到大排序)

1-2split快速排序(枢点法)

问题描述:

给定n个整数,利用枢点法快速排序的思想将其调整成单调序列。

输入:

整数的个数n,以及n个整数

输出:

从大到小排序的n个整数(或从小到大排序)

1-3平面最近点对

问题描述:

平面内有若干点,设计一算法在O(nlogn)时间内求出直线距离最近的一对点,并输它们的距离。

输入:

点对的数目n以及n对点的坐标

输出:

最近的点对坐标(x,y)以及距离d

1-4棋盘覆盖问题

问题描述:

在一个2k×2k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。

在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。

输入:

棋盘的行列数n,棋盘中特殊方格的行列号(x,y)

输出:

棋盘的覆盖方案

1-5求k大(小)元素(基于split枢点法划分)

问题描述:

有一数列,设计一分治递归算法,以Ω(nlogn)时间找出其第k大(小)元素。

输入:

整数的个数n、n个整数以及k值

输出:

第k大(小)元素值以及其对应的下标i

1-6二分检索

问题描述:

有一单调序列,设计一分治算法检索出元素x。

输入:

整数的个数n、n个单调增(减)个整数以及需检索的元素值x

输出:

最近的点对坐标(x,y)以及距离d

1-7大整数乘法(10进制)

问题描述:

有两个10制的大整数(不少于30位),设计一分治算法,以O(nlogn)时间算出其乘积。

输入:

第一个大整数的位数m、第二个大整数的位数n,以及两个大整数x,y

输出:

两个大整数的乘积s

1-8循环赛比赛安排

问题描述:

设计一个满足以下要求的比赛日程表:

(1)每个选手必须与其他n-1个选手各赛一次;

(2)每个选手一天只能赛一次;

(3)循环赛一共进行n-1天。

输入:

选手的个数n、n个选手的编号

输出:

每天的赛事安排(共n-1天)

1-9整数的划分问题

问题描述:

将正整数n表示成一系列正整数之和:

n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。

正整数n的这种表示称为正整数n的划分。

求正整数n的不同划分个数以及划分情况。

输入:

正整数n

输出:

n的划分个数以及划分情况

1-10主元素问题

问题描述:

有一个整数数列,数列中元素出现次数超过一半的元素定义为主元素,设计一分治算法,求出主元素。

输入:

整数的个数n以及n个整数

输出:

如果有主元素,输出主元素以及它们所在的位置;如果没有主元素,输出-1

1-11全排列的生成

问题描述:

给出一个序列,生成这个序列的全排列

输入:

整数的个数n以及n个整数

输出:

生成这n个数的全排列

贪婪算法

2-1加油站问题

问题描述:

一辆汽车加满油后,可行使n千米。

旅途中有若干个加油站。

若要使沿途加油次数最少,设计一个有效算法,对于给定的n和k个加油站位置,指出应在哪些加油站停靠加油才能使加油次数最少。

输入:

汽车加满油后可行驶千米数n,加油站个数k。

以及两两加油站之间的距离。

输出:

最少的加油次数m,如果无法到达目的地,则输出“NoSolution”。

2-2货币兑换问题

问题描述:

当前有N种面额的货币,请为M元钱找出最合理的兑换方案(要求找出的货币数目最少)

输入:

货币面额的种类以及各种货币的面额以及需要兑换的钱数M

输出:

兑换方案以及用到的货币张数。

2-3普通背包问题

问题描述:

给定n种物品和一个背包。

物品i的重量是Wi,其价值为Vi,背包的容量为C。

应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

(物体可以分割)

输入:

物体的件数n,背包的容量C,每件物品的重量和价值

输出:

背包内物品的总价值以及装载方案。

2-4单源最短路径问题

问题描述:

给定一张有向带权图,求源点到其他各个点的最短距离以及路径。

输入:

顶点个数n,有向带权图的邻接表数据

输出:

各个点到源点的最短距离以及最短路径

2-5最小生成树(prim)

问题描述:

给定一张无向带权图,利用pirm算法的思想求能将图的各个顶点全部连通的最短路径和(即最小生成树)

输入:

无向带权图

输出:

最小生成树

2-6最小生成树(kruskal)

问题描述:

给定一张无向带权图,利用kruscal算法的思想求能将图的各个顶点全部连通的最短路径和(即最小生成树)

输入:

无向带权图

输出:

最小生成树

2-7活动安排问题

问题描述:

设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si

如果选择了活动i,则它在半开时间区间[si,fi)内占用资源。

为这样的活动场所安排尽可能多的活动。

输入:

活动的个数n,以及每个活动的起始时间si和一个结束时间fi,且si

输出:

可安排的最大相容活动子集。

2-8排队接水问题

问题描述:

有N个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这N个人排队的一种顺序,使得N个人的平均等待时间最小。

输入:

人数N以及每个人的接水时间T1,T2,……,Tn,

输出:

排队顺序,即1到N的一种排列以及这种方案下的平均等待时间。

2-8田忌赛马

问题描述:

田忌和齐王赛马各有n匹马,现进行n场比赛,

比赛规则如下:

1、马匹不得重复参赛。

2、赢一场得2分,输一场得0分,平局各得1分

请为田忌安排马匹出场次序,使其得分最高。

输入:

马匹数目n,田忌每匹马的斗争值T1,T2,……,Tn,以及齐王每匹马的斗争值Q1,Q2,……,Qn,(值大的胜值小的马)

输出:

田忌马的出场次序以及最后的得分。

2-9程序存储问题

问题描述:

设有n个程序{1,2,3,…,n}要存放在长度为L的磁带上。

程序i存放在磁带上的长度是li,1≤i≤n。

要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。

输入:

先是两个正整数,分别表示程序文件个数n和磁带长度L,接下来是n个正整数,表示程序存放在磁带上的长度。

输出:

最多可以存储的程序个数m,以及已存程序的编号。

2-10数列极差问题

问题描述:

在黑板上写了N个正整数作成的一个数列,进行如下操作:

每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min,编程求解这样的极差。

输入:

正整数的个数N,以及N个正整数

输出:

极差d

动态规划

3-1导弹拦截问题

问题描述:

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。

但是这种导弹拦截系统有一个缺陷:

虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。

某天,雷达捕捉到敌国的导弹来袭。

由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入:

导弹依次飞来的高度(不大于30000的正整数),

输出:

最多能拦截多少导弹数,以及被拦截的导弹飞来时候的高度。

3-2合唱队型问题

问题描述:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。

合唱队形是指这样的一种队形:

设K位同学从左到右依次编号为1,2...,K,他们的身高分别为T1,T2,...,TK,则他们的身高满足T1<...Ti+1>...>TK(1<=i<=K)。

输入:

队员人数N和每个学生身高T[i],

输出:

最长的合唱队形的长度和相应的合唱队员编号。

3-3最大子段和问题

问题描述:

给定一个整数序列,求其连续子序列的和的最大值,如果序列中全为负数则规定最大子段和为0,长度L=0。

输入:

整数的个数n以及n个整数

输出:

最大连续子序列之和以及序列长度。

3-40/1背包问题

问题描述:

给定n种物品和一个背包。

物品i的重量是Wi,其价值为Vi,背包的容量为C。

应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

(物体不可以分割)

输入:

物体的件数n,背包的容量C,每件物品的重量和价值。

输出:

背包内物品的总价值以及装载方案。

3-5最长公共子序列问题

问题描述:

最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(LongestCommonSubsequence)。

其定义是,一个序列S,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。

设计一算法,求解两个序列的最长公共子序列。

输入:

已经序列A、B以及长度对应的长度m、n;

输出:

最长公共子序列以及其长度

3-6矩阵连乘加括号问题

问题描述:

给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。

给矩阵加上括号以确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。

输入:

矩阵个数和n,以及n个矩阵的行、列信息

输出:

加括号的信息以及最少的乘法次数。

3-7金矿开采问题

问题描述:

现在n座金矿,每座金矿开采需要的人数以及产金量已知(假设人数多或少于金矿开采所需人数均无法开采出一块金子),现有一定数量的人员,设计算法,计算出最多可以开采出的金矿数目。

输入:

金矿数目n、人数m、以及每座金矿所需人数Pi以及产金量gi

输出:

最多开采出的金矿数目以及人员安排方案

3-8多段图最短路径问题

问题描述:

给定一张有向带权图,设计一动态规划的算法,计算出所有点到最后目标点的最短距离以及路径。

输入:

有向带权图的邻接表以及项点个数n

输出:

每点到最后目标点的最短距离以及路径。

3-9资源最优分配问题

问题描述:

现在有某种资源共n个单位,准备将它们分配到m个项目上,设在第i个项目上分配j个单位的资源就可以获得的收益为a[i,j],求可以获得的最大总收益。

输入:

资源数n,工程数m以及第i个项目上分配j个单位的资源可以获得的收益a[i,j]

输出:

最优分配方案以及可以获得的最大收益。

3-10轨道建造问题

问题描述:

建造滑雪场的升降轨道。

起点和终点的高度已知,x坐标分割成若干份,间隔为1,每一点都给出支架的高度。

要选择尽可能少的支架顶端建立固定点,两个固定点之间用一条直钢轨连接,当然要求中间支架的高度都不能超过钢轨在那里的高度。

而且两个相邻固定点之间的距离不能超过给定的K。

输入:

起点和终点海拔高度H1,H2,支架总个数n以及每个支架的海拔高度hi,相邻固定点间的最大限度距离K

输出:

最少用于固定的支架数目x以及用到的支架编号

3-11乘积最大问题

问题描述:

向长度为N的数字串中插入r个乘号,将其分成r+1个组成部分,找出一种分法,使得这r+1个部分乘积最大。

输入:

数字串的个数以及N个数字字符,以有乘号的个数r

输出:

乘号的位置以及最后的乘积

回溯法

4-1N后问题

问题描述:

在n×n格的棋盘上放置彼此不受攻击的n个皇后。

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子,设计一算法,求解一种皇后的摆放方案。

输入:

皇后数目n

输出:

各个皇后的摆放位置

4-2马步遍历问题

问题描述:

有一n×n格的棋盘,按照国际象棋的规划,马只能走“日”字型结构,设计一算法,按马的走法将棋盘每一格刚好遍历一次。

输入:

棋盘大小n

输出:

遍历方案

4-3迷宫问题

问题描述:

设有一个n×m格的迷宫,四面封闭,仅在左上角的格子有入口,左下角的格子有出口。

迷宫内部的格子,其东、西、南、北四面可能有出入口,也可能没有出入口。

设计一个程序通过迷宫

输入:

迷宫

输出:

行走方案

4-4图m着色问题

问题描述:

用m种颜色为无向图G=(VE)的每个顶点着色要求每个顶点着一种颜色、并使相邻两个顶点之间具有不同颜色。

输入:

地图邻接矩阵以及可用颜色种类m

输入:

着色方案以及用到的颜色数(一种即可)

4-50/1背包问题

问题描述:

给定n种物品和一个背包。

物品i的重量是Wi,其价值为Vi,背包的容量为C。

应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

(物体不可以分割)

输入:

物体的件数n,背包的容量C,每件物品的重量和价值。

输出:

背包内物品的总价值以及装载方案。

4-6符号三角形问题

问题描述:

有一种符号三角形由“+”“-”两种符号组成,其第一行的符号是已知,其余各行的符号的生成规则如下:

2个同号下面都是“+”,2个异号下面都是“-”。

求第一行符号个数n已知的情况下,生成的三角形中“+”“-”号个数相等的三角形数目。

输入:

第一行符号的个数n

输出:

“+”“-”个数相等的三角形的数目以及三角形

4-7旅行售货员问题

问题描述:

有一售货员,要到世界各地去销售商品,各城市之间的旅行代价已知,为其制定一旅行计划,将各个城市刚好遍历一次再回到起点,并且旅行代价总和最小。

输入:

各个城市之间的旅行代价以及城市的个数n

输出:

最小代价和以及旅行方案。

4-8作业分配问题

问题描述:

现有个操作员操作n项作业,每第i个操作员操作第j项作业的时间Aij(0≤i,j≤n)已知,要求每个操作员操作一项作业,使得操作时间总和最小。

输入:

操作员个数n,第i个操作员操作第j项作业的时间Aij(0≤i,j≤n)

输出:

分配方案以及操作时间总和。

4-9陷井逃离问题

问题描述:

TOM掉进了一个陷阱阵,每个陷阱两种选择,选择一:

逃离,但若想成功逃离,需要相应的时间将其排除,并需在其规定时间前逃出,否则无法逃出。

选择二:

直接通过,但直接通过生命将消耗1点。

为其制定一逃生方案,使其消耗生命最少。

输入:

陷阱个数n,生命点m,以及每个陷阱的排除所需时间以及最晚逃离时间。

输出:

逃生方案以及剩余生命值,若无法逃离,则输出-1.

4-10最大子段和问题

问题描述:

给定一个整数序列,求其连续子序列的和的最大值,如果序列中全为负数则规定最大子段和为0,长度L=0。

输入:

整数的个数n以及n个整数

输出:

最大连续子序列之和以及序列长度。

4-11整数的划分问题

问题描述:

将正整数n表示成一系列正整数之和:

n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。

正整数n的这种表示称为正整数n的划分。

求正整数n的不同划分个数以及划分情况。

输入:

正整数n

输出:

n的划分个数以及划分情况

4-12乘积最大问题

问题描述:

向长度为N的数字串中插入r个乘号,将其分成r+1个组成部分,找出一种分法,使得这r+1个部分乘积最大。

输入:

数字串的个数以及N个数字字符,以有乘号的个数r

输出:

乘号的位置以及最后的乘积

分支限界

5-10/1背包问题

问题描述:

给定n种物品和一个背包。

物品i的重量是Wi,其价值为Vi,背包的容量为C。

应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

(物体不可以分割)

输入:

物体的件数n,背包的容量C,每件物品的重量和价值。

输出:

背包内物品的总价值以及装载方案。

5-2旅行售货员问题

问题描述:

有一售货员,要到世界各地去销售商品,各城市之间的旅行代价已知,为其制定一旅行计划,将各个城市刚好遍历一次再回到起点,并且旅行代价总和最小。

输入:

各个城市之间的旅行代价以及城市的个数n

输出:

最小代价和以及旅行方案。

5-3作业分配问题

问题描述:

现有个操作员操作n项作业,每第i个操作员操作第j项作业的时间Aij(0≤i,j≤n)已知,要求每个操作员操作一项作业,使得操作时间总和最小。

输入:

操作员个数n,第i个操作员操作第j项作业的时间Aij(0≤i,j≤n)

输出:

分配方案以及操作时间总和。

图的遍历问题

6-1图的深度优先遍历算法(要求用邻接表存储)

问题描述:

给定一张图,要求用深度优先方式对图的结点进行遍历

输入:

图的顶点个数以及邻接表数据

输出:

遍历次序

6-2图的广度优先遍历算法(要求用邻接矩阵存储)

问题描述:

给定一张图,要求用广度优先方式对图的结点进行遍历

输入:

图的顶点个数以及邻接表数据

输出:

遍历次序

 

ACM专题(可置换题)

7-1猫和老鼠

问题描述:

有一只很霸道的猫,捉来好多好多老鼠,然后,这只猫就开始开大餐了。

但为了显得它与众不同,它用了一个很特别的就餐顺序:

它先定好步长k,然后它吃掉第1个位置上的,然后再每隔k只再吃一只老鼠一轮结束后,它再次从第1个位置开始继续吃,直到最后只剩下一只老鼠为止。

而这最后一只老鼠这只猫会放走,因为它不想破坏生态平衡,它希望这只老鼠,来年再制造n只。

(当然它怎么找它的另一半就不管了。

)但这群老鼠中,有一只特别聪明,它希望不死,它经过计算,于是一开始它就站在一个特别的位置上,而最后,它果然没死,被放走了,你知道它站在哪个位置上吗?

输入:

多组测试数据,每组一行,每行两个正整数n和k(1<=n,k<=1000000)n和k的意义如描述

输出:

输出这只老鼠站的位置

样例输入:

101

62

样例输出:

8

5

7-2猜数字游戏

问题描述:

猜数字游戏是gameboy最喜欢的游戏之一。

游戏的规则是这样的:

计算机随机产生一个四位数,然后玩家猜这个四位数是什么。

每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。

比如计算机随机产生的数字为1122。

如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。

如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。

现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。

输入:

输入数据有多组。

每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。

在接下来的N行中,每行三个整数A,B,C。

gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。

当N=0时,输入数据结束。

输出:

每组输入数据对应一行输出。

如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出"Notsure"。

样例输入:

648152157161078421049010085853385553224815002999330

样例输出:

3585Notsure

7-3采矿游戏

问题描述:

某天gameboy玩魔兽RPG。

有一个任务是在一个富含金矿的圆形小岛上建一个基地,以最快的速度采集完这个小岛上的所有金矿。

这个小岛上有n(0

而且这个小岛的地势非常平坦,所以基地可以建在小岛的任何位置,每个金矿的采矿速度只跟矿藏到基地的路程长度有关。

为了不让这个任务太无聊,游戏设计者对这个小岛施了个“魔法”,规定矿工在小岛上只能正南正北正西正东走。

也就是说矿工不能斜着在岛上走。

这个小岛在一个二维直角坐标系中描述。

你的任务就是帮gameboy找一个建造基地的位置,使矿工能以最快的速度采完所有矿。

输入:

输入数据有多组。

每组数据的第一行是一个正整数n(0

在接下来的n行中,每行有两个实数x,y,表示其中一个金矿的坐标。

n=0表示输入数据结束。

输出:

每一组输入数据对应一行输出,输出两个实数x,y(保留小数点后两位),也就是你找到的建造基地的位置坐标。

如果坐标不唯一,可以任选一个输出。

样例输入:

41.01.03.01.03.03.01.03.00

样例输出:

2.002.00

7-4母猪问题

问题描述:

话说现在猪肉价格这么贵,著名的ACBoy0068也开始了养猪生活。

说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪。

不过光生小猪也不行,0068采用了一个很奇特的办法来管理他的养猪场:

对于每头刚出生的小猪,在他生下第二头小猪后立马被杀掉,卖到超市里。

假设在创业的第一天,0068只买了一头刚出生的小猪,请问,在第N天晚上,0068的养猪场里还存有多少头猪?

输入:

测试数据的第一行包含有一个正整数T,代表测试数据的个数。

接下来有T组测试,每组测试数据占一行,分别有一个正整数N代表0068创业的第N天。

(0

输出:

对于每组数据,请在一行里输出第N天晚上养猪场里猪的数目。

样例输入:

223

样例输出:

23

7-5杀人游戏

问题描述:

不知道你是否玩过杀人游戏,这里的杀人游戏可没有法官,警察之类的人,只有土匪,现在已知有N个土匪站在一排,每个土匪都有一个编号,从1到N,每次杀人时给定一个K值,从还活着的土匪中,编号从小到大的找到K个人,然后杀掉,继续往下,直到找遍,然后继续从剩下的土匪中,编号从小到大找到第K个活着的土匪,然后杀掉。

比如,现在有10个土匪,K为3,第一次杀掉3,6,9号的土匪,第二次杀掉4,8号土匪,第三次杀掉5号土匪,第四次杀掉7号土匪,第五次杀掉10号土匪,我们看到10号土匪是最后一个被杀掉的(从1到K-1的土匪运气好,不会被杀!

)。

现在给定你一个N和一个K,问你最后一个被杀掉的土匪的编号是多少。

输入:

第一行有一个T(T<=10000),接下来有T组数据,每组中包含一个N(N<2^31)和一个K(3<=K<=100&&K

输出:

对于每组数据,输出最后被杀的土匪的编号。

样例输入:

1103

样例输出:

10

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2