算法
genius-x
这个作者很懒,什么都没留下…
展开
-
四元数,四叉树的理解
四元数四元数是复数向三维的扩充扩展,使用复数乘法来实现旋转。具体参考如下:Understanding QuaternionsUnderstanding Quaternions 中文翻译四叉树其实就是将二维空间使用矩形大小来表示,每个结点分为 0:LeftUp, 1:LeftDown, 2:RightUp, 3:RightDown,然后递归存储数据,一般数据存储在叶子节点,也可以进行改进,...原创 2019-04-09 22:44:18 · 473 阅读 · 0 评论 -
平衡二叉树
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。代码class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { return Judge(pRoot)==-1?false:true; } //当子树是平衡二叉树时返回深度否则返回-1 //若专门在每个节点求深度...原创 2018-09-25 22:03:41 · 129 阅读 · 0 评论 -
二叉树的深度
题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NU...原创 2018-09-25 21:39:13 · 165 阅读 · 0 评论 -
外星人的一天
题目描述:地球上的一天是 24 小时。但地球上还有一些精力和勤奋度都远超一般人的大神级人物,他们的“一天”是以 48 小时为周期运转的,这种人被人们尊称为“外星人”。比如普通人的周一早 8:30 是外星人的周一早 4:15;普通人的周二早 9:21 是外星人的周一下午 4:40 —— 对外星人而言,一周的工作时间只有三天(即普通人的周一至周六),周日他们会蒙头大睡恢复体力,时间对他们是没有意义的。在原创 2018-03-25 16:33:26 · 581 阅读 · 0 评论 -
到底是不是太胖了
题目描述:据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。输入描述:输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H原创 2018-03-25 16:31:04 · 1260 阅读 · 0 评论 -
是不是太胖了
题目描述:据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)输入描述:输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。输出描述:在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。代码#include<stdio.h>int main(原创 2018-03-25 16:29:45 · 276 阅读 · 0 评论 -
情人节
题目描述:2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。输入描述:输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。输出描述:根据点赞情况在一行中输出结论:若存在第2个人原创 2018-03-25 16:28:01 · 284 阅读 · 0 评论 -
宇宙无敌加法器
题目描述:地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。原创 2018-03-25 16:25:37 · 610 阅读 · 0 评论 -
大笨钟
题目描述:微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。原创 2018-03-25 16:23:44 · 1586 阅读 · 0 评论 -
古风排版
题目描述:中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入描述:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。原创 2018-03-25 16:21:04 · 346 阅读 · 0 评论 -
说反话-加强版
题目描述:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入描述:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出描述:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。代码#include&l...原创 2018-03-11 16:28:33 · 508 阅读 · 0 评论 -
数字加密
题目描述:本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位输入描述:输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。输出描...原创 2018-03-16 17:36:11 · 1700 阅读 · 0 评论 -
a+b(高级版)
题目描述:实现一个加法器,使其能够输出a+b的值输入描述:输入包括两个数a和b,其中a和b的位数不超过1000位输出描述:可能有多组测试数据,对于每组数据, 输出a+b的值。代码#include<stdio.h>#include<string.h>void f(char *s)//翻转字符串 { int len...原创 2018-02-21 11:45:54 · 317 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。代码#include<algorithm>using namespace std;class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2)...原创 2018-09-26 09:51:10 · 204 阅读 · 0 评论 -
二叉树的下一个结点
题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。代码/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNod...原创 2018-09-26 23:03:13 · 124 阅读 · 0 评论 -
字符迷阵
#include&amp;lt;vector&amp;gt;#include&amp;lt;iostream&amp;gt;#include&amp;lt;string&amp;gt;using namespace std;vector&amp;lt;int&amp;gt; ves;int M, N;char **map;int times = 0;void fin原创 2019-03-08 22:14:50 · 273 阅读 · 0 评论 -
推箱子
#include<iostream>#include<queue>#include<cstdio>using namespace std;int M, N;char map[10][10];int x, y, bx, by, ex, ey;int a[] = { 0,0,1,-1 };int b[] = { 1,-1,0,0 };struct ...原创 2019-03-08 22:09:33 · 157 阅读 · 0 评论 -
反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。代码/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* p...原创 2018-09-29 16:32:59 · 137 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。代码/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* ...原创 2018-09-29 16:24:51 · 145 阅读 · 0 评论 -
变态跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码class Solution {public: int jumpFloorII(int number) { if(number==0||number==1) return 1; return 1<&...原创 2018-09-29 16:15:59 · 132 阅读 · 0 评论 -
跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。代码class Solution {public: int jumpFloor(int number) { if(number==1||number==0) return 1; return jump...原创 2018-09-29 16:09:54 · 127 阅读 · 0 评论 -
斐波那契数列
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39代码class Solution {public: int Fibonacci(int n) { int *a = new int[n+1]; a[0]=0; a[1]=a[2]=1; fo...原创 2018-09-29 16:05:26 · 181 阅读 · 0 评论 -
从尾到头打印链表
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。代码/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/...原创 2018-09-29 15:35:37 · 127 阅读 · 0 评论 -
左旋转字符串
题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!代码class Solution {public: string LeftRotat...原创 2018-09-29 14:14:06 · 153 阅读 · 0 评论 -
和为S的两个数字
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。代码class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { //用于保存结果 ...原创 2018-09-29 11:30:38 · 127 阅读 · 0 评论 -
数字在排序数组中出现的次数
题目描述:统计一个数字在排序数组中出现的次数。代码class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int len=data.size(); if(len==0) return 0; int i=0,j=len-1...原创 2018-09-29 11:02:48 · 204 阅读 · 0 评论 -
二叉树的镜像
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public:...原创 2018-09-29 09:51:56 · 148 阅读 · 0 评论 -
对称的二叉树
题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left...原创 2018-09-26 23:30:52 · 111 阅读 · 0 评论 -
a+b(基础版)
题目描述:计算a+b的和输入描述:每行包行两个整数a和b输出描述:对于每行输入对应输出一行a和b的和代码#include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) { printf("%d\n",a+b)...原创 2018-02-20 12:16:13 · 2357 阅读 · 0 评论 -
对称矩阵
题目描述:输入一个N维矩阵,判断是否对称。输入描述:输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。 接下来的N行,每行包括N个数,表示N*N矩阵的元素输出描述:可能有多组测试数据,对于每组数据, 输出”Yes!”表示矩阵为对称矩阵。 输出”No!”表示矩阵不是对称矩阵。代码#include<stdio.h>...原创 2018-02-21 11:31:55 · 706 阅读 · 0 评论 -
二叉排序树
题目描述:二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值; 2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值; 3. 左、右子树本身也是一颗二叉排序树。 现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父...原创 2018-02-08 13:55:03 · 3491 阅读 · 0 评论 -
IP地址
题目描述:输入一个ip地址串,判断是否合法。输入描述:每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。输出描述:可能有多组测试数据,对于每组数据,如果IP地址合法则输出”Yes!”,否则输出”No!”。合法的IP地址为: a、b、c、d都是0-255的整数。代码#include<stdio.h>int main()...原创 2018-02-08 12:29:42 · 3460 阅读 · 0 评论 -
统计单词
题目描述:编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)输入描述:输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。输出描述:可能有多组测试数据,对于每组数据,输出字符串中每个单词包含的字母的个数。代码#include&l...原创 2018-02-08 12:15:39 · 3346 阅读 · 0 评论 -
矩阵转置
题目描述:输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何数组(就地逆置)。输入描述:输入的第一行包括一个整数N,(1<=N<=100),代表矩阵的维数。接下来的N行每行有N个整数,分别代表矩阵的元素。输出描述:可能有多组测试数据,对于每组数据,将输入的矩阵转置后输出。代码#include<stdio.h>#include&...原创 2018-02-08 11:27:31 · 3492 阅读 · 0 评论 -
遍历链表
题目描述:建立一个升序链表并遍历输出输入描述:输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数输出描述:可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。代码#include<stdio.h>#include<stdlib.h>typedef struct...原创 2018-02-14 21:27:22 · 6696 阅读 · 0 评论 -
最大的两个数
题目描述:输入一个四行五列的矩阵,找出每列最大的两个数。输入描述:接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。输出描述:可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。 输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出...原创 2018-02-12 15:59:34 · 3465 阅读 · 0 评论 -
二叉树遍历
题目描述:二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)输入描述:两个字符串,其长度n...原创 2018-02-12 13:51:32 · 3366 阅读 · 0 评论 -
特殊排序
题目描述:输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。输入描述:输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。 接下来的一行有N个整数。输出描述:可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。 第二行将排序的结果输出。代码#include...原创 2018-02-12 13:00:48 · 3438 阅读 · 0 评论 -
排序
题目描述:对输入的n个数进行排序并输出输入描述:输入的第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。输出描述:可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。 每组测试数据的结果占一行。代码#include<stdio.h>#include<stdlib....原创 2018-02-12 12:34:04 · 3300 阅读 · 0 评论 -
判断用户名字符串的合法性
题目描述:编写程序,判断键盘输入的用户名字符串的合法性。 用户名要求总长度不少于10个字符,首字符必须是字母,其他位置必须含有2-6个不重复的数字,不能含有等号(=)和星号(*)号。 例如:m123abc456是合法用户名代码:#include<stdio.h>#include<string.h>void Yes(){ printf("合...原创 2018-02-08 17:25:14 · 8233 阅读 · 0 评论