算法笔记

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

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

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

链表 单链表结构 // 单链表节点的结构 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...

《算法笔记》PAT B1040【代码】

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10?0000,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。 输入样例: APPAPT 输出样例:...

「算法笔记」2-SAT 问题【代码】

一、定义 k-SAT(Satisfiability)问题的形式如下:有 \(n\) 个 01 变量 \(x_1,x_2,\cdots,x_n\),另有 \(m\) 个变量取值需要满足的限制。每个限制是一个 \(k\) 元组 \((x_{p_1},x_{p_2},\cdots,x_{p_k})\),满足 \(x_{p_1}\oplus x_{p_2}\oplus\cdots\oplus x_{p_k}=a\)。其中 \(a\) 为 \(0\) 或 \(1\),\(\oplus\) 是某种二元 bool 运算(如 或运算 \(\vee\)、与运算 \(\wedge\))。要求构造一种满足所有限制的变量的赋值方案。当...

《算法笔记》二分—木棒切割问题&求凸多边形外接圆最大半径【代码】

木棒切割问题 大意:给N根木棒,通过切割至少得到K段长度相同的木棒,长度相同的木棒最长能有多长 思路:已知结论,长度相同的木棒长度越长,切割得到的K越小,可以二分法,即求最后一个满足“k<=K”的L,可转换为第一个满足“k>K”的位置,再减一 #include<stdio.h> #include<algorithm> using namespace std;int main() {int n,K,k=0,length[10];scanf("%d%d",&n,&K);for(int i=0;i<n;i++){scanf("%d",&length[i]);}sort(length,...

《算法笔记》3.2小节——入门模拟->查找元素_问题 B: 找x【代码】

问题 B: 找x 题目描述 输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。 输入 测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。 输出 对于每组输入,请输出结果。 样例输入 Copy 4 1 2 3 4 3 样例输出 Copy 2 #include<cstdio> int num[200]; int main(){int n,a,lo;while(scanf("%d",&n)!=EOF){lo=-1;for(int i=0;i<n;i++){scanf("%d",&num[...

《算法笔记》区间贪心【代码】

大概题意 给定N个开区间,从中尽可能选择多的开区间,使得这些开区间两两没有交集 思路 如果有区间包含的情况,则选择小的区间,能容纳更多不包含的区间 去除区间包含的情况,将所有区间按照左端点从大到小排序,总是选择左端点最大的区间 #include<cstdio> #include<algorithm> using namespace std;const int maxn=11; struct Inteval{int x,y; }I[maxn];bool cmp(Inteval a,Inteval b)//将区间排序 {if(a.x!=b.x) return a.x>b....

Java数据结构与算法笔记——优先级队列【代码】

文章目录 优先级队列介绍实现一个简单的优先级队列 优先级队列介绍 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。 在优先队列中,元素被赋予优先级。在插入元素时,要按照优先级找到正确的位置并插入。 实现一个简单的优先级队列 数值的大小作为优先级,数值越大优先级越高。 插入:根据元素的大小插入。 取出:取出队头元素。 在这里插入代码片package queue;public class QueueTest3 {public static ...

PAT B1020 -《算法笔记》【代码】

前言: 21考研,正在啃《算法笔记》,不论能否进复试记录一下准备路上写下的垃圾代码。 解答: #include<iostream> #include<vector> #include<algorithm> #include<cmath> using namespace std;struct moon {double save;double price;double portion; }; bool cmp(moon brand1, moon brand2) {if (brand1.portion > brand2.portion)return true;elsereturn false; } int main() {int n, req;double income = 0;cin >> n >> req;v...

n诺算法笔记【代码】【图】

第一章基础 输入输出 C 输入 1、scanf() 注意 字符串不用取值符 一些说明: scanf() %c格式可以读入空格和换行,而其他的字符都已空白符(空格,换行)为结束判断标志,不读入 2、gets() 读入一整行 使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车...