数据结构与算法
楼兰剑客
这个作者很懒,什么都没留下…
展开
-
AVL平衡二叉树C++版
#include <iostream>using namespace std;class AVLNode{public: int data; int height;//结点的高度,叶子结点高度为1 AVLNode* lChild; AVLNode* rChild;public: AVLNode(int data):data(data)...原创 2018-08-12 15:59:44 · 264 阅读 · 0 评论 -
打印1到最大n位数(大数问题)
#include <iostream>#include <cstring>using namespace std;bool Increment(char* number);void PrintNum(char* number);void Print1ToMaxOfN(int n){ if(n<=0) return;原创 2018-08-24 15:21:12 · 296 阅读 · 0 评论 -
奇数在前,偶数在后
#include <iostream>#include <cstring>#include <vector>using namespace std;//是否为偶数 bool isEven(int num){ return (num & 1) == 0; }void reOrderArray(vector<i原创 2018-08-24 16:38:12 · 1504 阅读 · 0 评论 -
八种排序算法C++注释版
#include <iostream>#include <queue>using namespace std;//冒泡排序,时间复杂度O(n^2),空间复杂度O(1),稳定 void BubbleSort(int a[], int n){ for(int i=0; i<n-1; ++i){ bool isCmp = false; ...原创 2018-08-25 22:29:39 · 246 阅读 · 0 评论 -
如何仅用递归函数和栈操作逆序一个栈(Java详解版)
import java.util.Stack;public class ReverseStack { /** * 1、首先,取出栈顶元素 * 2、然后求剩下元素的最后一个元素 * 3、最后将栈顶元素放回 * 其中第二步为递归调用,递归终止条件是栈中只有一个元素,此时直接返回栈顶即可得到最后一个元素 */ public static int getAndRemoveLa...原创 2018-09-28 23:25:26 · 246 阅读 · 0 评论 -
小熊吃糖(拼多多笔试题)
import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextI...原创 2019-03-10 14:49:23 · 228 阅读 · 0 评论 -
螺旋数字正方形
螺旋数字正方形 题目描述 打印螺旋数字正方形输入描述 输入一个整数n,1<=n<=31输出描述 输出数字正方形。注意,每个数字占4个字符,右对齐,不全则补足空格;样例输入 10样例输出 1 2 3 4 5 6 7 8 9 10 36 37 38 39 40 41 42 43 44 11 ...原创 2018-07-15 11:10:18 · 3419 阅读 · 0 评论 -
用递归法计算从n个人中选选k个人组成一个委员会的不同组合数。
用递归法计算从n个人中选选k个人组成一个委员会的不同组合数。 分析由n个人里选k个人的组合数= 由n-1个人里选k个人的组合数+由n-1个人里选k-1个人的组合数;当n = k或k = 0时,组合数为1。#include <iostream>using namespace std;int select(int n, int k){ if(n==k||k=...原创 2018-07-15 13:22:11 · 3357 阅读 · 2 评论 -
打印字母菱形
字母菱形 (100/100 分数)题目描述打印字母菱形输入描述输入一个大写字母与一个整数n,1<=n<=26输出描述输出如下高度为2n-1的菱形;注意:A的下一个字母是B,Z的下一个字母是A样例输入R 12样例输出 R S S T T U U ...原创 2018-07-15 15:39:03 · 2907 阅读 · 0 评论 -
打印空心菱形
最重要的是把一个图形分成多个部分处理#include <iostream>using namespace std;int main(){ int n; cin >> n; //第一行 for(int i=0; i<n-1; ++i){ cout << ' '; } cout &am原创 2018-07-15 15:10:54 · 363 阅读 · 0 评论 -
丑数
C3-3 丑数 (100/100 分数) 题目描述 只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数,另外1也不是丑数。请编写一个函数,输入一个整数n,能够判断该整数是否为丑数,如果是,则输出True,否则输出False。输入描述 每行输入一个正整数 n1 <= n<= 1000000输出描述 对于每一行输入,输出其...原创 2018-07-15 18:02:36 · 844 阅读 · 0 评论 -
回文字符串
回文字符串 题目描述 若一个字符串的正序与倒序相同,则称其为回文字符串;现在给定一个字符串,使用递归的方法,判断他是否是回文字符串。输入描述 字符串,长度不超过100000;输出描述 若是,则输出”Yes.”若不是,则输出”No.”样例输入 abcadacba样例输出 Yes.解法一://此算法空间消耗大#include <iostream>...原创 2018-07-16 22:07:17 · 14991 阅读 · 0 评论 -
求最后三位数值
求最后三位数值 (100/100 分数) 题目描述 求最后三位数值输入描述 输入整数n, a,1<=n, a<=10000输出描述 n的a次方的最后三位数值,忽略前缀0样例输入 14 5样例输出 824#include <iostream>#include <iomanip>#include <cmath&am原创 2018-07-18 20:22:32 · 2529 阅读 · 0 评论 -
求最长等值序列
求最长等值序列 (100/100 分数) 题目描述 给定一个数列A,如果其中有一段(至少含有两个元素)序列里面的元素都相等,则称这段序列为等值序列。我们的任务是求最长的等值序列输入描述 第一行是数列的长度n,n<=50第二行是n个数字输出描述 输出最长等值序列在原始数列中的起始位置和末位置,数列的起始下标为0;若有多个最长等值序列,输出第一个最长等值序列的起始位置和...原创 2018-07-18 21:23:03 · 515 阅读 · 2 评论 -
出现次数最多的数字
出现次数最多的数字 (100/100 分数) 题目描述 给定一串已经从小到大排好顺序的数字,其中有些数字出现了多次,请输出出现次数最多的那个数字。如果有两个数字出现的次数一样,那么其中较小的那个。输入描述 输入一个整数n,表示有n个已经排好顺序的数字,其中(0 < n < 1000).接下来n行,每行一个数字。输出描述 输出为一行,表示出现次数最多的那个数字。...原创 2018-07-18 22:07:46 · 2212 阅读 · 0 评论 -
二叉树C++版
#include <iostream>#include <stack>using namespace std;template <class T>class BinNode{public: T data; BinNode<T>* leftChi原创 2018-08-07 23:03:49 · 345 阅读 · 1 评论 -
KMP算法 C++版
#include <iostream>#include <cstring>using namespace std;void get_next(const char* str, int next[]){ next[0] = 0; int k = 0;//字符串最大相同前后缀长度 int size原创 2018-08-08 21:44:11 · 224 阅读 · 0 评论 -
二叉搜索树C++版
#include <iostream>using namespace std;class BTNode{public: int data; BTNode* lChild; BTNode* rChild; BTNode(int data):data(data), lChild(nullptr), rChild(nullptr){}};clas...原创 2018-08-11 16:20:35 · 145 阅读 · 0 评论 -
判断是否为2的整数次方
//输入一个正数判断是否为2的整数次方 bool IntPower(int n){ //是2的整数次方,则说明二进制中只有一个1,其余全为0,只要把这个1也变成0,则n就变为0 //n-1将最后一个1变成0,之后的0变成1,之前的不变,再和n按位与,则可以将n中最后一个1变成0。 if(((n-1)&n) == 0) return true;...原创 2018-08-23 22:39:13 · 364 阅读 · 0 评论