算法笔记

以下是为您整理出来关于【算法笔记】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法笔记】技术教程文章

《算法笔记》3.6小节——入门模拟->字符串处理 问题 I: 【字符串】回文串【代码】

问题 I: 【字符串】回文串 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。输入一行字符串,长度不超过255。输出如果是回文串,输出“YES”,否则输出“NO”。样例输入 12321样例输出 YES代码 #include<cstdio> #include<cstring>int main(){char a[256];while(gets(a)){int len=strlen(a),k=0;for(int i=...

《算法笔记》第九章——哈夫曼树 学习记录【图】

先介绍经典的合并果子问题。 有n堆果子,每堆果子的质量已知,现在需要把这些果子合并成一一堆, 但是每次只能把两堆果子合并到一起,同时会消耗与两堆果子质量之和等值的体力。显然,在进行n-1次合并之后,就只剩下一堆了。为了尽可能节省体力,请设计出合并的次序方案,使得耗费的体力最少,并给出消耗的体力值。 例如有3堆果子,质量依次为1、2、9。那么可以先将质量为1和2的果堆合并,新堆质量为3,因此耗费体力为3。接着,将新...

算法之详解高精度加法【算法笔记】【代码】【图】

(我已经把CSDN当作笔记本了~…,这里语言会浅显一点不想搞得很高级的样子) 高精度是各类信息竞赛中的必会类型,高精度一般就是整数位太长,小数位太大,程序很难直接运算或表达。 直接进入正题,不磨蹭,将问题分析一点点解决。 Q1: 为什么需要高精度 c语言现有的类型无法存储,上图,看一眼即可 Q2:如何实现加法,通过什么实现 小学我们学过,加减乘除,对于每一位,满十进1,不满十直接相加即可。对于高精度的加法,采用的也...

《算法笔记》3.4小节—日期处理 问题 D: 日期类【代码】

问题 D: 日期类时间限制 : 1.000 sec 内存限制 : 32 MB题目描述编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。输入输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。输出输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。样例输入 2 1999 10 20 2001 1 31样例输出 1999-10-21 2001-02-01提示注意个位数日期前面要有0。代码 #include<cstdio>int month[1...

算法笔记:归并排序 快速排序 计数排序【代码】

归并排序 public static void mergeSort(int[] a) {mergeSort(a, 0, a.length - 1); }public static void mergeSort(int[] a, int start, int end) {// 递归出口:数组长度为1时if (start >= end) {return;}// 取中点int mid = start + (end - start) / 2;// 递归排序左半部分mergeSort(a, start, mid);// 递归排序右半部分mergeSort(a, mid + 1, end);// 运行到这里时 [start, mid] [mid + 1, end]已经各自有序 将两个有序数组合并...

Java数据结构与算法笔记——递归解决数学问题的两个其他案例【代码】【图】

文章目录 递归求数的乘方递归解决组合问题 递归求数的乘方package recursion;public class RecursionTest8 {public static void main(String[] args) {System.out.println(pow(2,5));}//用递归的算法实现求乘方,y不能是负数public static int pow(int x, int y){if(y == 0){//任何数的0次方是1return 1;}if(y == 1){//边界条件,当y等于1时,不再进行递归return x;}if(y%2==1){//奇数return pow(x*x,y/2)*x;}else {return pow(x*x...

《算法笔记》3.4小节——入门模拟->日期处理 问题 B: Day of Week【代码】

题目描述 We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400. For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap. Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s ag...

Codeup-100000627-《算法笔记》【代码】

前言: 21考研,正在啃《算法笔记》,不论能否进复试记录一下准备路上写下的垃圾代码。 解答: #include<stdio.h> #include<iostream> #include<algorithm> using namespace std; const int maxn = 1000 + 10; int dp[maxn]; int main() {int n;int a[maxn];while (cin >> n) {int max = 0;for (int i = 0; i < n; i++)dp[i] = 1;for (int i = 0; i < n; i++)scanf("%d", &a[i]);for (int i = 0; i < n; i++) {for (int j = 0; j <...

算法笔记5.4【代码】

前n个素数的求法:埃氏筛 leetcode204:https://leetcode-cn.com/problems/count-primes/ 算法笔记5.4 素数也叫做质数 #include <iostream> #include<map> #include<string> #include<cstdio> using namespace std; int arr[10000]={0}; int numberofprime(int num){int cnt=0;if(num<2)return 0;for(int i=2;i<=num;i++){if(arr[i]==0){cnt++;printf("%d ",i);for(int j=i+i;j<=num;j+=i){arr[j]=1;}}}return cnt; } int main() {in...

算法笔记之二分查找

对于学习算法或者做一些查找题喜欢从头做遍历,这种算法的时间复杂度为O(N),这是一个普适性的算法,几乎所有的查找都可以用它,而且时间复杂不高在我们能够接受的范围之内。但我下面介绍的是另外一个特殊的算法,它不具备普适性,它只适合查找那些已经排好序的元素并且查找的数据元素量很庞大,这种情况下用二分查找将在时间效率方面体现巨大优势,因为它的时间复杂度为O(logN),而且很多学校程序语言期末考试大题都会考到,所以建...