![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析
以C++语言为基本实现形式,研究分治法,暴力法,回溯法,分支限界法,动态规划等基础算法。
Alfred young
大四计算机科学与技术学生,喜欢研究操作系统,分布式系统,云计算相关领域。
展开
-
算法设计与分析考前复习
算法设计与分析考前复习 qiwang的NOJ系统在考前一天崩了,强烈建议开发新OJ 另外,由于以下这些题是我上完数电实验用了下午和晚上时间写的,可能会出一些错。 分治法复习 二分查找 描述 给定一个单调递增的整数序列,问某个整数是否在序列中。 输入 第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。 输出 每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。 输入样例 5 1原创 2020-11-20 23:06:56 · 1028 阅读 · 1 评论 -
NOJ1041——算法实验四——最长公共子序列
最长公共子序列问题 问题描述 描述: 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1, x2,…, xm>,则另一序列Z=<z1, z2,…, zk>是X的子序列是指存在一个严格递增的下标序列 <i1, i2,…, ik>,使得对于所有j=1,2,…,k有: Xij = Zj 如果一个序列S即是A的子序列又是B的子序列,则称S是A、B的公共子序列。 求A、B所有公共子序列中最长的序列的长度。 输入: 输入共两行,每行一个由字母和数原创 2020-11-07 20:59:37 · 759 阅读 · 0 评论 -
NOJ1326——算法实验三——推箱子
推箱子 描述: 绝大多数人都玩过推箱子的游戏,控制一个人将箱子推动到目标位置即获得胜利。现请你编写一个程序,判断将箱子推到目标位置至少需要多少步。 输入: 推箱子的平面区域为固定大小(10*10),使用10行10列输入推箱子的初始局面。其中,0代表空格,1代表墙,2代表箱子,3代表目标位置,4代表人。 注:游戏中只有一个箱子,一个目标位置,一个人。 输出: 输出将箱子推到目标位置的最小步数;若箱子不可能被推到目标位置,输出-1。 输入样例: 0000000000 0000000300 0100000000原创 2020-10-25 13:16:08 · 957 阅读 · 0 评论 -
NOJ1045——算法实验三——六数码问题
六数码问题 描述: 现有一两行三列的表格如下: A B C D E F 把1、2、3、4、5、6六个数字分别填入A、B、C、D、E、F格子中,每个格子一个数字且各不相同。每种不同的填法称为一种布局。如下: 1 3 5 2 4 6 布局1 2 5 6 4 3 1 布局2 定义α变换如下:把A格中的数字放入B格,把B格中的数字放入E格,把E格中的数字放入D格,把D格中的数字放入A格。 定义β变换如下:把B格中的数字放入C格,把C格中的数字放入F格,把F格中的数字放入E格,把E格中的数字放入B格。 问:对于给定的原创 2020-10-25 13:00:38 · 720 阅读 · 0 评论 -
NOJ1044——算法实验三——独轮车
独轮车 这道题参考了一位学长的博客的思路 描述: 独轮车的轮子上有红、黄、蓝、白、绿(依顺时针序)5种颜色,在一个如下图所示的20*20的迷宫内每走一个格子,轮子上的颜色变化一次。独轮车只能向前推或在原地转向。每走一格或原地转向90度均消耗一个单位时间。现给定一个起点(S)和一个终点(T),求独轮车以轮子上的指定颜色到达终点所需的最短时间。 输入: 本题包含一个测例。测例中分别用一个大写字母表示方向和轮子的颜色,其对应关系为:E-东、S-南、W-西、N-北;R-红、Y-黄、B-蓝、W-白、G-绿。在测原创 2020-10-25 12:50:15 · 1179 阅读 · 0 评论 -
NOJ1043——算法实验三——跳马
跳马 描述: 在国际象棋中,马的走法与中国象棋类似,即俗话说的“马走日”,下图所示即国际象棋中马(K)在一步能到达的格子(其中黑色的格子是能到达的位置)。 现有一200*200大小的国际象棋棋盘,棋盘中仅有一个马,给定马的当前位置(S)和目标位置(T),求出马最少需要多少跳才能从当前位置到达目标位置。 输入: 本题包含多个测例。输入数据的第一行有一个整数N(1<=N<=1000),表示测例的个数,接下来的每一行有四个以空格分隔的整数,分别表示马当前位置及目标位置的横、纵坐标C(x,y)和G(x原创 2020-10-25 12:40:36 · 763 阅读 · 0 评论 -
NOJ1042——算法实验三——电子老鼠闯迷宫
电子老鼠闯迷宫 描述: 有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。 输入: 本题包含一个测例。在测例的第一行有四个由空格分隔的整数,分别表示起点的坐标S(x.y)和终点的坐标T(x,y)。从第二行开始的12行中,每行有12个字符,描述迷宫的情况,其中’X’表示建筑物,’.'表示路. 输出: 输出一个整数,即电子老鼠原创 2020-10-25 11:43:40 · 1106 阅读 · 0 评论 -
NOJ1541——算法实验三——加1乘2平方
加1乘2平方 描述: 最简单的队列的使用 #include #include using namespace std; queue q1; int main() { int temp, x; q1.push(5);//入队 q1.push(8);//入队 temp = q1.front();//访问队首元素 q1.pop();//出队 q1.empty();//判队列是否为空 q1.back();//返回队尾元素 q1.size();//返回队列长度 } 给定两个正整数m、n,问只能做加1、乘2和平方这原创 2020-10-25 11:27:32 · 1001 阅读 · 0 评论