算法
文章平均质量分 76
本心_
行动派
展开
-
IDEA使用LeetCode插件
IDEA使用LeetCode插件前言我们习惯用idea编写、调试代码,在LeetCode上刷题时,如果能够在IDEA编写代码,并且做好代码管理和保存,是一件事半功倍的事情。对于后续复习题目,做笔记也会非常便利。本文目的在于介绍LeetCode Editor的使用,以及配置工具类,最终目录结构如下:note:放置笔记src:放置代码leetcode.editor.cn:插件LeetCode Editor自动生成utils:自定义的工具包,可用于自动化输入测试用例,定义题目需要的类(结构体)原创 2022-02-28 19:38:49 · 15753 阅读 · 2 评论 -
LeetCode 234.回文链表
题目给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。**进阶:**你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路回文串的特征是从头到尾与从尾到头遍历的值一一对应相等,如12321,给定一条数据如果符合这个特征即可判断它是回文串。解法一:栈描述如果不考虑空间复杂度,这个问题就非常的简单,新建一个栈,遍历一遍链表,将数据压入栈中,再重新遍历一次链表并且数据出栈,如果值不相等,则不是回文串,如果全相等,则是回原创 2022-02-24 18:33:46 · 452 阅读 · 0 评论 -
二维数组排序
ps:注意要动态分配二维数组空间。静态分配数组报错的原因分析:sort函数对元素排序,需要改变本来指向a[0],a[1]的指针指向,而这两个指针的指向是固定的#include <cstdio>#include <algorithm>using namespace std;bool cmp(const int *a, const int *b) { r...原创 2018-10-21 21:40:21 · 121 阅读 · 0 评论 -
POJ1011
参考博文:https://www.cnblogs.com/zqy123/p/4921564.html问题分析:原棍子长度范围在锯断后最长的棍子长度到所有棍子的总长度之内,所以从小到大循环遍历可能的原棍子长度,符合条件的长度即结果。#include <iostream>#include <algorithm>#include <cstring>...原创 2018-12-06 19:34:06 · 1358 阅读 · 0 评论 -
POJ1010
问题分析:深度遍历(dfs)所有可能的组合,选择出最优组合。组合选择条件:1.邮票种类多的组合优先选择;2.在邮票种类一样多的情况下,邮票张数少的组合优先选择;3.前两个条件一样的情况下,组合中面值最大的邮票进行比较,面值更大的邮票对应的组合优先选择;组合条件选择一个判断就够了,难点在于如何遍历得到所有可能的组合,然后再从这些组合中选择最优解。c++代码:如何用df...原创 2018-12-04 21:51:17 · 549 阅读 · 0 评论 -
POJ1008
理解题意之后很容易得到两个日历之间的换算,但是要注意holly日历最后一天的计算,如当经过了260的倍数天数时,holly日历如何显示呢?#include <cstdio>#include <string>#include <iostream>#include <algorithm>using namespace std;int m...原创 2018-11-16 08:03:17 · 332 阅读 · 0 评论 -
POJ1006
原文链接:http://exp-blog.com/2018/06/24/pid-1054/问题分析:中国剩余定理,本题难点不在编程,而是分析题目并转化为数学公式要引入本题解法,先来看一个故事 “韩信点兵”:传说西汉大将韩信,由于比较年轻,开始他的部下对他不很佩服。有一次阅兵时,韩信要求士兵分三路纵队,结果末尾多2人,改成五路纵队,结果末尾多3人,再改成七路纵队,结果又余下2人,后...原创 2018-10-21 15:06:20 · 134 阅读 · 0 评论 -
POJ1005
注意是每年向外扩张 50 square miles#include <stdio.h>#include <math.h>const float PI = 3.141592;int main() { int N,count = 0; float x,y,year; scanf("%d", &N); while (N--) { count++;...原创 2018-10-21 09:53:44 · 153 阅读 · 0 评论 -
POJ1004
再次发现找不到原因的错误。。。。输入用double类型会WA,而用float则AC,求解#include <cstdio>using namespace std;int main() { float n, sum = 0; for (int i = 0; i < 12; i++) { scanf("%f", &n); sum += n; } p...原创 2018-10-12 17:25:24 · 149 阅读 · 0 评论 -
POJ1003
思路:输入number,从1/2(n = 2)开始,每次减去1/n,n逐渐递增,直到number<0,输出结果。number不是直接与1/n相减,原因是程序无法处理1/n,求出number与n的最小公倍数,通分后再求出结果。第一次提交产生了output limit exceeded错误,问了度娘,发现可能是输入形式的问题,更改后AC,如图第一次提交的输入方式 while (s...原创 2018-10-12 16:43:34 · 346 阅读 · 0 评论 -
POJ 1002
本来自己用的结构体做,存储一个号码和记录这个号码出现的次数输入时即判断转化后的代码是否出现过,如果出现,增加号码次数,没出现,添加新号码,号码次数赋值为1用纯c写的代码。。。最后还自己写了冒泡排序。。。。用strlem比较大小。。。。时间超时。。。。以下代码参照了别人的思路,较之自己的思路用时更短,所需空间更少ps:注意输出细节#include <cstdio>...原创 2018-10-10 18:40:22 · 373 阅读 · 0 评论 -
POJ 1001
大数相乘问题1.将输入的字符串转化化成整型存储在number 中,运算时每次乘以number2.将输入的字符串逆向存储在整型数组a[]中,用于存储每次乘以number后的结果3.具体运算过程就是求number的n次方,每次运算以a[]中的每一位数字乘上number4.用point计算小数的位数,输出时逆序输出a[],并且处理小数个数即可#include <stdio.h...原创 2018-10-01 11:57:30 · 1963 阅读 · 0 评论 -
NYOJ33
模拟填数的过程#include <cstdio>#include <algorithm>#include <cstring>using namespace std;void snake(int n) { int t = 1, tot = n*n; int a[n][n]; //存储数据的二维数组 int i = 0,j = n-1; /...原创 2018-11-20 20:13:23 · 155 阅读 · 0 评论 -
NYOJ 257
郁闷的C小加(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述我们熟悉的表达式如a+b、a+b*(c+d)等都属于中缀表达式。中缀表达式就是(对于双目运算符来说)操作符在两个操作数中间:num1 operand num2。同理,后缀表达式就是操作符在两个操作数之后:num1 num2 operand。ACM队的“C小加”正在郁闷怎样把一个中缀表达式...原创 2018-03-07 22:18:07 · 240 阅读 · 0 评论 -
求一个数的所有因子
1.求n的所有因子,循环枚举到sqrt(n):int arr[100] = {1}; //1是任意数字的因子//用数组按顺序存储因子,函数返回因子的个数int factor(int n) { int count = 1, num = sqrt(n); for (int i = 2; i <= num; i++) { if (!(n % i)) { arr[count...原创 2018-09-23 00:32:01 · 22580 阅读 · 6 评论 -
蓝桥杯第八届 省赛 c语言A组
第一题标题:迷宫X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!开始的时候,直升机把10...原创 2019-03-08 19:27:07 · 598 阅读 · 0 评论 -
蓝桥杯第六届 省赛 c语言A组
第一题 方程整数解方程: a^2 + b^2 + c^2 = 1000这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。你能算出另一组合适的解吗?请填写该解中最小的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。【思路】这题有争议,有人算出是10,有人的答案是-30,既然题目没有明确说明答案是非负整数,我觉得应该是-30。#in...原创 2019-03-07 19:19:45 · 713 阅读 · 0 评论 -
蓝桥杯第七届 省赛 c语言A组
第一题网友年龄某君新认识一网友。当问及年龄时,他的网友说:“我的年龄是个2位数,我比儿子大27岁,如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”请你计算:网友的年龄一共有多少种可能情况?提示:30岁就是其中一种可能哦.请填写表示可能情况的种数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。【思路】写一个循环即可解决问题。答案:7...原创 2019-03-08 08:14:08 · 735 阅读 · 0 评论 -
蓝桥杯第九届 省赛 c语言A组
第一题标题:分数1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ....每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。类似:3/2当然,这只是加了前2项而已。分子分母要求互质。注意:需要提交的是已经约分过的分数,中间任何位置不能含有空格。请不要填写任何多余的文字或符号。【思路】通分再相加,注意分子分母要互质,写了一个对两...原创 2019-03-08 17:50:31 · 2315 阅读 · 0 评论 -
蓝桥杯 剪方格
/*解答不保证完全正确解题思路: 1.首先利用dfs找出符合条件的剪纸方式 1)由于用dfs,所以剪出来的纸必定是联通的 2)以上"符合条件"具体指:剪纸的每个方格之和为总和的一半 3)由于剪纸并不存在所谓的起点,所以每个方格都应该作为初始状态调用dfs 2.判断剩下的另一半剪纸是否是联通的 由于题目要求剪出来的纸片刚好分成两部份而且没...原创 2019-03-18 20:55:00 · 273 阅读 · 0 评论 -
深度优先搜索算法与广度优先搜索算法的简单运用:迷宫问题
迷宫问题迷宫是许多小方格构成的矩形,每个小方格中有的是墙(1),有的是路(0),走迷宫就是从一个小方格沿上下左右四个方向到邻近的方格,当然不能穿墙。设迷宫的入口是左上角1,1,出口是8,8,根据给定的迷宫a.使用广度优先算法找到迷宫问题的从入口到出口的一条路径b.使用深度优先算法找到迷宫问题的从入口到出口的一条路径c.使用回溯法找到迷宫问题的从入口到出口的所有简单路径 ...原创 2018-12-09 17:48:39 · 1449 阅读 · 0 评论 -
动态规划:找钱问题
问题描述:有一个特别的国度,只发行4种面值的硬币,分别是1元硬币,5元硬币,11元硬币,50元硬币。小明去售货机前买饮料,饮料售价35元一瓶,小明投入了50元硬币。现在售货机要找15元钱给他。假设每种硬币的数量充足,现在要求使用最少数量的硬币,给小明找钱,求出这个最少数量是多少。 问题分析:售货机要给小明找回15元零钱,而现在只有4种面值的硬币可以使用,现在的核心问题是如何使用这4...原创 2018-11-24 19:40:50 · 3274 阅读 · 0 评论 -
商人过河问题
问题描述:三名商人各带一个随从过河,一只小船只能容纳两个人,随从们约定,只要在河的任何一岸,一旦随从人数多于商人人数就杀人越货,但是商人们知道了他们的约定,并且如何过河的大权掌握在商人们手中,商人们该采取怎样的策略才能安全过河呢?问题分析(数学建模):参考书籍: 《数学模型》 姜启源 建模示例之二网上大部分的分析方法和书本都相同算法分析(在问题分析的基础上进行,不懂得朋友先去...原创 2018-10-20 21:17:50 · 6440 阅读 · 0 评论 -
利用sort函数对结构体进行排序
划重点:添加cmp(函数名可更改)函数,根据需要定制排序#include <cstdio>#include <algorithm>using namespace std;struct Node { int a; int b;};int cmp(const Node &first, const Node &second) { //根据需...原创 2018-10-10 19:50:14 · 3952 阅读 · 2 评论 -
排序算法:希尔排序
具体思路:1.设置增量,依据增量把数组分成若干组2.每次遍历将每个组依次进行插入排序3.改变增量大小(重复执行2,3步骤) 示例代码:#include <stdio.h>#include <math.h>void shellSort(int a[], int n) { int gap = n; while (gap != 0) { gap ...原创 2018-10-16 21:25:08 · 236 阅读 · 0 评论 -
组合数的几种实现算法
题目条件:找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。从大到小输出。(从小到大输出同理,读者自行琢磨。) 方法1:递归算法:1.先固定每组组合的第一个数字2.利用递归再固定下一个数字,类似于树状结构,照此类推3.递归跳出条件r = 1#include <stdio.h>const i...原创 2018-09-26 09:19:05 · 11273 阅读 · 2 评论 -
Fibonacci算法实现的几种方法
公式:F(n) = F(n-1) + F(n-2)假设第一个数是0,第二个数是1 1.迭代加法:long long fabonacci_first(int n) { long long a = 0, b = 1; if (n == 1) return a; else if (n == 2) return b; else { for (int i = 3; i <...原创 2018-09-13 20:33:46 · 3492 阅读 · 0 评论 -
各种排列算法实现
1.1 3 6 102 5 94 8 7void arrange(int n) { //n为打印数字的个数 int note = 1, sum = 0, count = 1; while (sum < n) { sum += note; note++; } int arr[note][note] = {0};//浪费至少一半...原创 2018-09-23 11:20:14 · 227 阅读 · 0 评论 -
排序算法:计数排序
算法思想:假设有6个数分别代表6个人竞选,{5,2,8,7,4,3}有六个投票箱,初始值为0,{0,0,0,0,0,0}有六个桶,表示按投票箱票数最终放的位置,即排序结果首先给5投票,比5小的数给5投票,2,4,3均比5小,5得三票,{3,0,0,0,0,0}然后给2投票,由于2是6个数中的最小值,所以2得0票,自己的1票在这不算哦!依旧是{3,0,0,0,0,0}依次类推...原创 2018-10-28 11:27:11 · 644 阅读 · 0 评论 -
分治算法:大整数相乘 字符串实现
由于网上大部分用分治算法实现的大整数相乘程序,其输入乘数竟然设定为int值,实现了分治思想,但实在不能称其为大整数。本文实现了用字符串存储乘数,并且输出正确结果。由于算法未经过大量数据测试,可能还存在问题,欢迎指教讨论,求轻踩。。。算法分析:https://www.cnblogs.com/little-kwy/archive/2017/09/30/7613642.html下面的函数均为分治...原创 2018-11-10 21:09:16 · 964 阅读 · 0 评论