算法初步
算法初步学习
小白兔奶糖ovo
承载了太多期许的目光,怎敢轻易辜负!
展开
-
多重背包问题I
java 日常算法原创 2022-03-17 19:37:56 · 89 阅读 · 0 评论 -
Keep In Line
每日一题。原创 2022-01-20 21:23:08 · 252 阅读 · 0 评论 -
#吐泡泡# cpp
每日一题。原创 2022-01-20 20:39:56 · 301 阅读 · 0 评论 -
栈和排序 cpp
每日一题。原创 2022-01-19 21:28:46 · 641 阅读 · 0 评论 -
#Rails# cpp
每日一题。原创 2022-01-19 20:51:58 · 136 阅读 · 0 评论 -
#好串# C++
每日一题。原创 2022-01-18 19:33:51 · 441 阅读 · 0 评论 -
[NOIP1998] 拼数
每日一题。原创 2022-01-16 17:10:11 · 374 阅读 · 0 评论 -
牛牛的三角形
每日一题。原创 2022-01-16 15:56:03 · 520 阅读 · 0 评论 -
#装进肚子#
每日一题。原创 2022-01-16 15:18:27 · 321 阅读 · 0 评论 -
老子的全排列呢
每日一题。原创 2022-01-16 11:27:12 · 459 阅读 · 0 评论 -
[USACO 2009 Mar S] Look Up
来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述Farmer John’s N (1 <= N <= 100,000) cows, conveniently numbered 1…N, are once again standing in a row. Cow i has height Hi (1 <= Hi <= 1,000,000).Each cow is原创 2022-01-13 17:51:41 · 377 阅读 · 1 评论 -
[NOIP2007] 字符串的展开
每日一题原创 2022-01-09 15:49:21 · 346 阅读 · 0 评论 -
1002 - 排列式
牛客日常原创 2022-01-07 12:07:17 · 551 阅读 · 0 评论 -
787. 归并排序
AcWing题库 787.归并排序原创 2022-01-03 20:00:50 · 95 阅读 · 0 评论 -
PTA 二叉树叶结点值和最大层 (14 分)
已知一棵非空二叉树结点的数据域为不等于0的整数,请编写程序找出该二叉树中叶结点数据值之和最大的层。输入格式:输入为一组用空格间隔的整数,个数不超过100个,表示带空指针信息的二叉树先根序列。输出格式:输出为一个整数,表示叶结点数据值之和最大的层,如果存在多个满足条件的层,则输出最下面一层。输入样例1:1 2 0 0 3 0 0输出样例1:1输入样例2:1 -2 0 0 3 -1 0 0 -1 0 0输出样例2:2AC:#include <bits/st.原创 2021-12-01 16:23:36 · 1722 阅读 · 0 评论 -
PTA 整数分解为若干项之和 (20 分)
将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。输入样例:7结尾无空行输出样例:7=1+1+1+1+1+1+1;7=1+1+1+1+1+2;7=1+1+1+1+3;7=1+1+1+2+27=1+1+1+4;7=1+1+2+3;7=1+1+5;7=1+2+2+27=1+2+4;7=1+3+3;7=1+6;7=2+2+37=2+5;7=3+4;7=7结尾无空行AC:#include .原创 2021-11-23 20:03:05 · 634 阅读 · 0 评论 -
PTA 一元多项式的乘法与加法运算 (20 分)
设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1结尾无空行输出样例:15 24 -2..原创 2021-11-23 18:49:19 · 637 阅读 · 0 评论 -
PTA 在一个数组中实现两个堆栈 (20 分)
本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Position;struct SNode { ElementType *Data; ..原创 2021-11-22 19:50:31 · 681 阅读 · 1 评论 -
PTA 顺序表操作集 (20 分)
本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ..转载 2021-11-22 10:41:22 · 211 阅读 · 0 评论 -
PTA 顺序表和优先队列 (10 分)
这是一个用顺序表实现的优先队列,声明如下:class PriorityQueue { private: int *Data; int Size; int MaxSize; public: PriorityQueue(int n = 100); ~PriorityQueue() { delete []Data; } int size() const { return Size; } bool empty() cons.原创 2021-11-14 16:35:14 · 730 阅读 · 0 评论 -
PTA 银行业务队列简单模拟 (25 分)
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。输出格式:按业务处理完成的.原创 2021-11-13 10:06:53 · 414 阅读 · 0 评论 -
PTA 带头结点的链式表操作集 (20 分)
本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType D.原创 2021-11-11 18:47:03 · 403 阅读 · 0 评论 -
PTA 链式表操作集 (20 分)
本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNod..原创 2021-11-10 21:08:29 · 235 阅读 · 0 评论 -
基础实验2-2.1 整数的分类处理 (20 分)
给定 N 个正整数,要求你从中得到下列三种计算结果:A1 = 能被 3 整除的最大整数A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)输入格式:输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。输出格式:在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。..原创 2021-11-10 19:06:38 · 640 阅读 · 0 评论 -
进阶实验1-3.1 两个有序序列的中位数 (25 分)
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0, A1,…, AN-1 的中位数指 A(N−1)/2 的值,即第 ⌊(N+1)/2⌋ 个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式:在一行中输出两个输入序列的并集序列的中位数。输入样例1:51 3 5 7 92 3 4 5 6结尾无空行输出样例1:4结尾.原创 2021-11-08 20:44:10 · 246 阅读 · 0 评论 -
PTA 出栈序列的合法性 (25 分)
给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, …, N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。输入格式:输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数)。最后 K 行,每行给出 N 个数字的出栈序列。所有同行数字以空格间隔。输出格式:.原创 2021-11-06 16:31:12 · 231 阅读 · 0 评论 -
PTA 括号匹配 (18 分)
检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。输入格式:在一行中输入一段C语言代码,长度不超过1000个字符(行末以换行符结束)。输出格式:第一行输出左括号的数量和右括号的数量,中间以一个空格间隔。若括号是匹配的,在第二行打印YES,否则打印NO。输入样例1:for(int i=0; i<v; i++){ visited[i] = 0; for(int j=0; j<v; j++) scanf("%d",&(g->Adj[i][j].原创 2021-11-06 10:36:22 · 927 阅读 · 0 评论 -
PTA 带头结点的链队列的基本操作 (10 分)
实现链队列的入队列及出队列操作。函数接口定义:Status QueueInsert(LinkQueue *Q,ElemType e);Status QueueDelete(LinkQueue *Q,ElemType *e);其中 Q 和 e 都是用户传入的参数。 LinkQueue 的类型定义如下:typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode * next;}LNode.原创 2021-11-05 10:16:57 · 751 阅读 · 0 评论 -
6-4 链式表的按序号查找 (10 分)
本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数FindKth要返回链式表的第K个元素。如果该元素不存在,则返回E.原创 2021-10-17 15:10:01 · 83 阅读 · 0 评论 -
6-3 求链式表的表长 (10 分)
本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数Length要返回链式表的长度。裁判测试程序样例:#include <stdio.h>#inclu原创 2021-10-17 10:59:52 · 405 阅读 · 0 评论 -
万能的搜索
不撞南墙不回头——深度优先搜索深度优先搜索(DFS)的基本模型void dfs(int step){ 判断边界 尝试每一种可能 for (i = 1; i <= n;i++) { 继续下一步 dfs(step + 1); } 返回}假如有编号为 1,2,3 的3个盒子里,并且每个盒子有且只能 放一张扑克牌。那么有多少中不同的方法呢?#include <stdio.h>int a[10], book[10], n;/原创 2021-10-06 14:24:35 · 282 阅读 · 0 评论 -
枚举,很暴力!
坑爹的奥数将数字 1~9 分别填入9个方框中,每个数字只能使用一次使等式成立。□□□+□□□=□□□!更好的实现方法:标记法!用一个 book 数组来解决互不相等的问题。#include <stdio.h>int main(){ int a[10], i, total = 0; int book[10], sum; //这里可以用 a[1]~a[9] 来代替刚才的 a,b,c,d,e,f,g,h,i for (a[1] = 1; a[1] <=原创 2021-10-02 18:56:33 · 372 阅读 · 1 评论 -
链表与模拟链表
动态存储方法malloc 函数的作用是从内存中申请分配指定字节大小的内存空间。需要注意,malloc 函数的返回类型是 void * 类型。void * 表示未确定类型的指针。注意当在程序中使用 malloc 函数时需要用到 stdlib.h 头文件。#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ int *p; p = (int *)malloc(sizeof原创 2021-10-02 09:52:33 · 103 阅读 · 0 评论 -
贪心算法(最优装载问题)
加勒比海盗船海盗们截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一旦打碎就失去了它的价值。虽然海盗船足够大,但载重量为 C ,每件古董的重量为 Wi,海盗们该如何把尽可能多数量的宝贝装上海盗船呢?分析可以用贪心算法求解的最优装载问题,要求装载的物品的数量尽可能多,而船的容量是固定的,那么优先把重量小的物品放进去,在容量固定的情况下,装的物品最多。采用重量最轻者先装的贪心选择策略,从局部最优达到全局最优,从而产生最优装载问题的最优解。#include <iostream>.原创 2021-09-04 10:38:20 · 2524 阅读 · 0 评论 -
纸牌游戏——小猫钓鱼
游戏规则将一副扑克牌平均分成两份,每人拿一份。A先拿出手中的第一张扑克牌放在桌上,然后B也拿出手中的第一张扑克牌,并放在A刚打出的扑克牌的上面。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放在自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。假如游戏开始时,A手中有6张牌,顺序为 2 4 1 2 5 6,B手中也有6张牌,顺序为 3 1 3 5 6 4,最终谁会获胜呢?出牌就是出队赢牌就是入队每打出一张牌就相当于入栈.原创 2021-08-31 20:24:52 · 1920 阅读 · 0 评论 -
解密回文——栈
栈限定为只能在一端进行插入和删除操作队列,先进先出栈的实现很简单,只需要一个一维数组和一个指向栈顶的变量 top 就可以了。通过 top 进行插入和删除操作。作用“xyzyx” 是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。首先,我们需要读取这行字符串,并求出这个字符串的长度。char a[101];int len;gets(a);len=strlen(a); 如果一个字符串是回文的话,那么它必须.原创 2021-08-30 22:28:08 · 228 阅读 · 0 评论 -
队列——解密QQ号
小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 75 8 9 2 4”。解密的过程就像.原创 2021-08-20 13:36:28 · 163 阅读 · 0 评论 -
模拟算法(C/C++)
算法思路函数srand用来初始化随机数发生器,然后使用rand()函数来生成随机数使用这两个函数,需要在源程序头部包含"time.h"头文件。srnd(time(NULL));i=rand()%100+1;实例猜数游戏#include <bits/stdc++.h>using namespace std;int main(){ int n,m,i=0; srand(time(NULL)); n=rand()%100+1; do{ printf("请输入所原创 2021-08-21 15:48:03 · 748 阅读 · 0 评论 -
回溯算法(试探法)
算法思路基本思想:为了求得问题的解,先选择某一种可能情况进行试探,在试探过程中,一旦发现原来选择的假设情况是错误的,就退回一步重新选择,继续向另一个方向试探,如此反复进行,直至得到解或证明无解。编程经验对于常见的迷宫问题,就可使用试探法来求解,具体过程为:进入迷宫后,先任意选择一个方向,一步步向前试探前进,如果遇到死胡同,说明前进方向已无路可走,这时,首先看其他方向是否还有路可走;如果有路可走,则沿该方向再向前试探。按此原则不断试探,回溯,再搜索,直到找到新的出路或从原路返回入口处无解可至。原创 2021-08-21 15:03:36 · 368 阅读 · 0 评论 -
贪婪算法——换零钱
算法思路从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到算法中某一步不能不能再继续前进时,就停止算法,给出近似值。存在的问题不能保证最后的解是最优的。不能通过求最大或最小解问题。只能求满足某些约束条件的可行解的范围。实现过程从问题的某一初始解出发:while 是否达到(或近似达到)设定总目标求出可行解的一个解元素;由所有解元素组合成问题的一个可行解;实例换零钱人民币有100、50、10、5、2、1、0.5、0.原创 2021-08-20 15:21:59 · 424 阅读 · 0 评论