【算法笔记--三分查找】教程文章相关的互联网学习教程文章

算法笔记3.4D: 日期类(基础题)【代码】

题目描述编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。输入输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。输出输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。样例输入2 1999 10 20 2001 1 31样例输出1999-10-21 2001-02-01代码 #include<cstdio>int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int m...

[c/c++] 算法笔记 codeup 问题 E: A+B 输入输出练习V【代码】

问题 E: A+B 输入输出练习V 题目描述你的任务是计算若干整数的和。输入输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。输出对于每一行数据需要在相应的行输出和。样例输入 Copy2 4 1 2 3 4 5 1 2 3 4 5样例输出 Copy10 15#include<stdio.h>int main(){int n, m, sum = 0, a;scanf("%d", &n); while(n--){sum = 0;scanf("%d", &m);while(m--){scanf("%d", &a);sum += a;}printf("%d\n", sum...

算法笔记

一、前言 1、所有数据结构实质上都是数组和链表: 数组是内存上的连续存储:可根据下标遍历快,但新增或删除时,需要开辟新的连续的空间,所以扩容时慢。 链表是内存上不连续的存储,比数据多个指针,多耗费空间:遍历需要根据指针逐个查找,所以性能不如数组,但扩容更快,因为存储空间不连续。 2、所有的数据结构,都是有套路的:查询无非是 “遍历+递归” 。 3、刷题先刷二叉树,然后再去刷回溯、动态规划、分治

《算法笔记》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...

算法笔记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...

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 <...

《算法笔记》3.1小节——入门模拟->简单模拟【代码】

问题 A: 剩下的树 时间限制 : 1.000 sec 内存限制 : 32 MB 题目描述有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。 现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。 可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下...

算法笔记_链表【代码】【图】

链表 单链表结构 // 单链表节点的结构 public class ListNode {int val;ListNode next;ListNode(int x) { val = x; } }反转链表的一部分,就是给定一个索引区间,把单链表的中的这部分元素反转,其他部分保持不变。递归反转链表 1、递归反转整个链表 ListNode reverse(ListNode head) {//base caseif(head.next == null) {return head;}ListNode last = reverse(head.next);//反转子链表head.next.next = head;head.next = null;//...

【算法笔记】Day08 | 4.4贪心【代码】【图】

本节目录 4.4.1 简单贪心A.定义B.举例1--月饼b1.题意b2.思路b3.注意点b4.代码4.4.1 简单贪心 A.定义B.举例1–月饼 b1.题意b2.思路b3.注意点b4.代码 //4_4_1 #include<cstdio> #include<algorithm> using namespace std; struct mooncake {double store;//库存量double sell;//总售价double price;//单价 }cake[1010]; bool cmp(mooncake a,mooncake b){return a.price > b.price; } int main(){int n;double D;scanf("%d%1f",&n,&D...