
算法
文章平均质量分 77
ClearPromise
好好修炼!
展开
-
四则运算(可含括号)表达式求值问题
算法学习第六篇输入一个行数再在每行输入一个表达式,得出结果,这是一道非常经典的OJ题目,有一定的难度,CCF中也出现过类似的题目,大同小异,此题目难点集中在以下几点:1.判断符号优先级2.考虑括号问题3.字符串如何计算,涉及到栈的灵活运用4.结果的格式问题输入表达式输出结果,如果是小数则保留两位小数,四舍五入,整数运算直接取整输入:31+22.7/31+3*3输出:30...原创 2019-04-21 00:02:00 · 1332 阅读 · 0 评论 -
六数码问题
算法学习第五篇1.筛法判素数时限:1000ms 内存限制:10000K 总时限:3000ms给定两个数a,b,且两数都在1000以内,a小于b,输出[a,b]之间的所有素数。该题主要就是一个判断素数的方法,素数就是约数只包含1与其本身的数,知道这个原理其实问题就已经解决输入:2 5输出:235代码如下:#include <iostream>#inclu...原创 2019-04-19 23:00:27 · 507 阅读 · 0 评论 -
two pointers、归并排序、快速排序问题
算法学习第十二篇1.two pointers概念:two pointers广义上概念就是利用问题本身与序列的特性,利用下标i、j对序列进行扫描,以较低的复杂度来解决问题,其实也不太像是一种算法,说来可以看做是一种编程技巧,一种思想比较适合。例如在一个递增序列中找到a+b=c的数然后输出a,b的值,c是我们自己指定的数,常规做法很容易想到,两个下标遍历序列做个二重循环就可以解决问题,时间...原创 2019-04-29 15:45:56 · 320 阅读 · 0 评论 -
数据结构——链表,单链表篇
链表概述:线性表的链式存储结构称为链表,其中每个节点不仅包含元素本身信息,而且包含标识元素之间的逻辑关系的信息,在C/C++中常用指针来实现,这称为指针域。在线性表的链式存储中,每个链表都头结点,并通过头结点唯一标识该链表,称为头指针,相应指向首节点指针称为首指针,尾结点称为尾指针(切记单链表是无前驱的),如下图: 链表与顺序表的比...原创 2019-04-25 12:35:22 · 1814 阅读 · 0 评论 -
刷题:有几只猫
做完这题后才发现是一道PAT的改编题,原题是在一个只含P、A、T的字符串中计算能找出几个按顺序组成的字符串PAT,例如APPAPT,可以发现有两个按顺序组成的PAT字符串,分别是第二四六、三四六位,题目应该已经看明白了,这题与上面那道题类似,问在字符串内可以找到几只猫CAT,然后给定一个字符串从里面寻找。题目如下输入:CACCACCTT输出:8分析:一种是采用暴力法,做类似于字符串...原创 2019-04-30 10:40:50 · 211 阅读 · 0 评论 -
数字黑洞
给定一个各位数字不完全相同的四位正整数,如果先把四个数字按递减排序,再按递增排序,然后两者相减(大的减去小的),将会得到一个新的数字,对新的数字重复此步骤,很快就会停在数字黑洞“6147”输入:6767输出:7766-6677=10899810-0189=96219621-1269=83528532-2358=6174输入:3333输出:3333-3333=0000分...原创 2019-05-01 14:09:47 · 3870 阅读 · 1 评论 -
刷题:剪刀石头布
算得上是自己见过的比较有意思的一道题,真的是恶搞童年系列,话不多说,题目如下:输入格式:输入第 1 行给出正整数N(≤105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、...原创 2019-05-09 23:13:02 · 1837 阅读 · 0 评论 -
刷题:A+B和C问题及A+B问题的扩展
A+B和C时间限制:1s 内存限制:32Mb题目描述给定区间[-2^31, 2^31]内的3个整数A、B和C,请判断A+B是否大于C。输入输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出...原创 2019-05-07 22:30:51 · 697 阅读 · 0 评论 -
刷题:人口普查(20)
去了趟北方旅游,连续断更了十多天,这次回家后慢慢给补上。某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入格式:输入在第一行给出正整数N,取值在(0, 105]...原创 2019-05-27 22:05:40 · 349 阅读 · 0 评论 -
刷题:Prime factors
承接之前的素数问题,这是一道甲级PAT真题,题目原意是给出一个int范围的整数,按照从小到大输出其分解为质因数的乘法算式,输入输出样例如下:输入:98532468输出:97532468=2^2*11*17*101*1291分析:谈到质因子,首先有一个前提,质因子必须都是素数,例如8=2*2*2,180=2*2*3*3*5等,思路就来了首先列举出素数表,这在前面上篇文章(https:...原创 2019-05-04 13:42:34 · 287 阅读 · 0 评论 -
二分法问题深究
算法学习第十一篇谈到二分法问题,应该是比较熟悉的问题,猜数字程序大家应该都写过,这是我们在学习计算机算法比较常见到的一个小程序,功能是一个玩家制定一个数字另外一个玩家猜这个数字,然后猜者不断输入数字,当输入的数字比目标数字大时候,提示数字过大,小则提示过小,如此不断缩小猜的范围,最后猜到真正的答案。中间最所用到的主要思想就是这次探讨的二分法思想,运用二分法查找元素优势在于每次查找都可以取出当前...原创 2019-04-28 19:57:57 · 552 阅读 · 0 评论 -
算法学习之递归
算法学习第九篇谈到递归,就要谈谈分治,分治也叫分而治之,意为将一个大问题分解为若干个小问题然后逐个击破,最后合并所以子问题的解得到原问题的解,总体概括出来就是三步:分解、解决、合并,但需要注意的就是我们面对的子问题应该是相互独立的。递归递归思想是很适合用于实现分治算法的,子问题的求解过程相同,则我们可以通过重复调用自身的函数,从而得到我们想要的答案,虽然使用递归算法在实际编程中不太推崇...原创 2019-04-23 21:25:56 · 184 阅读 · 0 评论 -
日期差值,进制加法转换问题
##算法学习第二篇1.日期差值问题比较基础的问题,弄清楚月份,平年闰年即可,该题目可变形展开为求两国家时差问题,如下:输入:2018 2 12018 3 5输出:33#include <iostream>#include <cstdio>using namespace std;bool runnian(int year){ if(year...原创 2019-04-16 23:40:22 · 138 阅读 · 0 评论 -
数据结构——线性表、顺序表篇
线性表1.定义:线性表是具有相同特性的数据元素的一个有限序列2.抽象数据类型如下:原创 2019-04-21 23:56:42 · 214 阅读 · 0 评论 -
猴子挖花生问题
算法学习第七篇时限:1000ms 内存:10000k 总时限:3000ms在二维平面存在n堆花生,一只猴子位于原点,猴子要按顺序拿到所有的花生,并回到原点,猴子每次只能沿着x/y轴方向移动一个单位,要求输入n行,每行输入花生的坐标,输出猴子走过的总路程。思路:算法思路比较常规,主要就是构建两个数组,一个用于存放x轴坐标,一个用于存放y轴坐标,第一次比较将x轴数组与原点x轴坐标相减取绝对值...原创 2019-04-22 00:30:09 · 297 阅读 · 0 评论 -
回文判断,句子逆序问题
##算法学习第三篇1.回文判断回文:一个字符串从左到右从右到左都是相同的字符串,例如ab1ba,1x x1(可包含空格)输入:31x x1abbamama输出:yesyesno代码如下:#include <iostream>#include <cstring>#include <string>#include <vecto...原创 2019-04-18 00:06:45 · 196 阅读 · 0 评论 -
括号匹配、多行排序
记录一些自己考研复试,平时学习遇到的一些算法题主要也是自己学习的一些过程,希望自己可以坚持的分享下去,一战某985,经历了考研复试的失败,总想着些记录些什么,考研机试注重算法的考察,以前对于算法的学习不太深入,经历了考研复试机试感觉算法其实是很有意思的一件事情。大部分代码都是C/C++的代码,这也是考研中的一种大势。如题1.括号匹配问题,如下所示输入行数,接着n组输入n组输出输入:2...原创 2019-04-15 15:27:26 · 584 阅读 · 0 评论 -
刷题:ranking排名问题
算法学习第八篇有n个考点,每个考点里面都有考生进行考试,如果现在分别给定每个考场的人数及该考场里面的考生编号和成绩,现在要求将所有考生按分数从高到底进行排序,并按顺序输出所有考生编号、排名(分数相同则按编号大小排序)、考场号、以及考场内部的排名。分析:1.必然需要考虑先构造结构体,然后依次读入学生信息,再考虑对结构体的排序问题。2.编写cmp函数,使排序满足题目的要求。3.计算总排名,并且...原创 2019-04-22 23:56:45 · 696 阅读 · 0 评论 -
小探贪心算法
算法学习第十篇贪心方法是求解一类问题的重要思想,大部分都是用来考虑局部最优解法,继而达到全局最优,理论上是说得通的,但实际上有时并不能达到全部最优,例如我们熟悉的图求最短路径,就如下图: 我们从A到E点求出最短路径,如果按照局部最优来看A出发,必然选择权值为5的路径,然后C到E以6和7相...原创 2019-04-27 15:53:38 · 183 阅读 · 0 评论 -
字符串反转,判断星期几问题
算法学习第四篇1.字符串反转将输入的字符串进行反转,中间可包括空格,特殊符号等,难点就是要熟悉指针的运用,还有gets,puts的用法,因为字符串中间包含空格,之前写了很多遍用的是getchar一直没能把空格位置转换过来,后来在网上看了很多,翻了很多书籍才找到是gets的原因,了解这几个点,这道算法题难度应该不大。输入:2xi anwu han输出:na ixnah uw本题...原创 2019-04-18 23:01:16 · 120 阅读 · 0 评论 -
素数问题
1.筛法求素数(适用于大范围内求素数)先给出普通的求素数方案,如下是一种复杂度o(n√n)的求解100以内的素数求解方案#include <stdio.h>#include <math.h>bool isprime(int n){ if(n<=1) return false; int sqr=(int)sqrt(1.0*n); ...原创 2019-05-03 10:37:22 · 691 阅读 · 0 评论 -
谈谈数组
如何实现随机访问对于数组,相信绝大多数编程人员都是再熟悉不过的,用官方的话来介绍数组就是这句:数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同数据类型的数据。这一句非常官方的话涵盖着下面几个知识点:线性表、连续的内存空间和相同数据类型线性表在前面博客提到过,字面意思就是:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前后两个方向,除...原创 2019-06-02 22:47:58 · 177 阅读 · 0 评论