
数据结构与算法
数据结构与算法相关的代码
Crazy-Tony
努力成为攻城狮的码农~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
栈的实现代码
栈是一种先进后出数据结构,针对栈的操作应用,有出入栈,访问栈顶元素,判断栈是否为空,获取栈的大小等功能。下面的代码是用数组的方式实现栈的基础功能功能。#include <iostream>using namespace std;//初始化栈的参数:int Top=-1;//栈顶指针int st[10000];//定义栈void clear()//清空栈{ Top ...原创 2020-02-22 15:45:25 · 3018 阅读 · 2 评论 -
分治思想:快速排序
快速排序思想:设k=a[0](取基准元素),将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k的右边,和k相等的,在k的左右均可。然后再把k的左边的元素和右边的元素按照同样的方式进行排序。时间复杂度:n*logn空间复杂度:1和归并排序比较,快速排序比归并排序更加节省空间,但是快速排序的稳定性要比归并排序差。这里快排的代码没有对基准元素进行优化,属于最原始的快排代...原创 2020-02-01 14:14:39 · 215 阅读 · 0 评论 -
分治思想:归并排序
算法思想:已知一个待排序的数组a,把a的前一半进行排序,再把a的后一半进行排序,把2个已完成排序的数组进行归并排序到一个临时数组b中,然后把b中的数据再拷回a中即可。时间复杂度:logn*n空间复杂度:n代码:#include <iostream>using namespace std;void Merge(int arr[],int left,int mid...原创 2020-02-01 10:51:13 · 181 阅读 · 0 评论 -
枚举+二分查找:百练算法题2456:Aggressive cows(牛栏问题)
问题描述:(网址:http://bailian.openjudge.cn/practice/2456)Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN...原创 2020-01-30 17:26:04 · 498 阅读 · 0 评论 -
枚举+递归算法:计算24
问题描述:给出4个小于10的正整数,可以使用+-*/()的运算将这4个数连接起来得到一个表达式。问,是否存在一种计算方式可以使表达式的结果为24。输入:输入多行数据,每行包括4个小于10的正整数。最后一行数据为4个0,作为数据的终止。输出:对于每一组数据,如果可以得到24,则输出“YES”,否则输出“NO”。样例输入与输出:5 5 5 1YES1 1 4 2...原创 2020-01-29 15:16:41 · 536 阅读 · 0 评论 -
递归算法:苹果放置问题
问题描述:把M个苹果放在N个盘子中,允许有盘子为空,共有多少种放置的方法。1.2.1和2.1.1是同样的放置方法。输入:第一行是测试数据的数目Num(0<=Num<=20)。以下每行均包含2个整数M和N,以空格分开。1<=M,N<=10。输出:对输入的每组数据M和N,用一行输出相应的K。样例输入:17 3样例输出:8问题的思考及解...原创 2020-01-29 10:24:26 · 555 阅读 · 0 评论 -
递归算法:四则运算表达式求解
问题描述:输入为四则运算表达式,仅由整数、+、-、*、/、(、)组成,没有空格,要求求其值。假设运算符结果都是整数。“/”结果也是整数。样例输入:(2+3)*(5+7)+9/3样例输出:63问题的思考及解决:需要考虑如下几个问题:1)计算的优先级如何实现2)用哪一种算法的思路进行实现3)数字与运算符混合输入,如何进行区分我们将进行如下的考虑:1)计算...原创 2020-01-28 19:26:43 · 2152 阅读 · 0 评论 -
递归算法:N皇后问题
问题描述:输入一正整数n,要求n个国际象棋皇后,摆在n*n的棋盘上,互相不能攻击,即每个皇后的上下左右和对角线上仅有皇后自身。输出全部方案。输入:正整数N输出:N皇后问题的全部摆法。输出的结果里的每一行代表一种摆法。行里的第i个数字如果是n,就代表第i行的皇后应该放在第n列。皇后的行列号都是从1开始算。样例输入:4样例输出:2 4 1 33 1 4 2...原创 2020-01-27 15:38:45 · 1695 阅读 · 0 评论 -
递归算法:汉诺塔问题
问题描述:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移动到C座,但每次只能允许移动一个盘子,并且在移动的过程中,3个座上的盘子始终保持大盘在下小盘在上。在移动过程中可以利用B座,要求移动的步骤。输入为A座盘子的数量,输出为盘子的移动方式。样例输入:4样例输出:1:A->B2:A-&g...原创 2020-01-22 11:46:50 · 741 阅读 · 0 评论 -
递归算法:爬楼梯问题
问题描述:某人需要爬楼梯,他可以每次走1级或2级楼梯,输入楼梯的级数,求不同的走法数例如:楼梯一共有3级,他可以每次都走1级;或者第一次走1级,第二次走2级;也可以第一次走2级,第二次走1级。一共有3种爬楼梯的方法。输入:输入包含若干行,每行包含一个正整数N,代表楼梯的级数,1<=N<=30输出:不同的走法数,每一行输入对应一行的输出样例输入:58...原创 2020-01-21 18:14:20 · 6957 阅读 · 0 评论 -
枚举算法:熄灯问题
问题描述:1)有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。2)每个按钮的位置上有一盏灯。3)当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。如图所示:与一盏灯毗邻的多个...原创 2020-01-21 15:41:12 · 942 阅读 · 0 评论