算法/数据结构
文章平均质量分 54
使用C++
weixin_46191137
这个作者很懒,什么都没留下…
展开
-
链表的从尾到头打印(递归)
【代码】链表的从尾到头打印(递归)原创 2024-04-29 22:03:12 · 129 阅读 · 0 评论 -
P1981 [NOIP2013 普及组] 表达式求值
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。一行,为需要你计算的表达式,表达式中只包含数字、加法运算符。位时,请只输出最后 $ 4$ 位,前导 $ 0$ 不输出。表达式中加法运算符和乘法运算符的总数。表达式中加法运算符和乘法运算符的总数。表达式中加法运算符和乘法运算符的总数。,且没有括号,所有参与运算的数字均为。NOIP2013 普及组 T2。一个整数,表示这个表达式的值。输入数据保证这一行只有。注意:当答案长度多于。原创 2024-04-03 09:59:28 · 499 阅读 · 0 评论 -
病人排队问题
病人排队时间限制: 1000 ms 内存限制: 65536 KB提交数: 3105 通过数: 1213【题目描述】病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:1.老年人(年龄 >= 60岁)比非老年人优先看病。2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。3.非老年人按登记的先后顺序看病。【输入】第1行,输入一个小于100的正整数,表示病人的个数;后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示原创 2021-04-15 20:07:13 · 334 阅读 · 0 评论 -
行列转换问题
行列转换问题(动态数组解法)【问题描述】矩阵可以认为是N*M的二维数组。现在有一个巨大但稀疏的矩阵。N,M范围是:1<N,M≤100000,有K个位置有数据,K的范围是:1≤K<100000。矩阵输入的方式是从上到下(第1行到第N行)、从左到右(从第1列到第M列)扫描,己录有数据的坐标位置(x,y)和值(v)。这是按照行优先的方式保存数据的。现在要求按照列优先的方式输出数据,即从左到右、从上到下扫描,输出有数据的坐标和数值。 优先【输入格式】第1行,3个整数N,M,K,其中1≤原创 2021-04-17 22:04:12 · 1338 阅读 · 1 评论 -
质数筛(根号、埃氏筛、欧拉筛)
**质数筛**【题目描述】输入 n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。输入格式无输出格式无输入输出样例#输入:53 4 5 6 7#输出:3 5 71.【遍历到根号法】最暴力的解法,没啥好说的。#include<bits/stdc++.h>using namespace std;int n,t[101];bool judge(int x){ for(int i=2;原创 2021-04-19 22:47:59 · 997 阅读 · 0 评论 -
数据结构:C++实现单链表
c++单链表#include<bits/stdc++.h>//单链表using namespace std;struct Node{ int data; Node *next;};typedef Node* NODE;NODE p,head,tail;int n;void out()//输出函数{ p=head->next; while(p->next!=NULL) { cout<<p->原创 2021-04-29 22:14:35 · 66 阅读 · 0 评论 -
c++实现双向链表
**双向链表**#include<bits/stdc++.h>//双向链表using namespace std;struct Node{ int data; Node *pre,*next;};typedef Node* NODE;NODE p,q,head,tail;//需要额外的一个q,在建立双链表时指向前面的节点int n;void out()//正序输出链表{ p=tail; while(p->pre!=NULL)原创 2021-05-02 20:49:58 · 63 阅读 · 0 评论 -
c++高精度加、减、乘
c++高精度加、减、乘有些遗憾的是代码只能实现正整数的操作。#include<bits/stdc++.h>//高精度计算using namespace std;int a[30],b[30],ans[59];int lena,lenb,lenc,Symbola,Symbolb;int *c;void initial(int x[],int* len){ memset(x,0,30*sizeof(int)); *len=0;}void in(int x[]原创 2021-05-05 20:32:31 · 67 阅读 · 0 评论 -
凸多边形的三角划分(catalan数)
凸多边形的三角划分(catalan数)【问题描述】在一个凸n边形中,通过不相交于n边形内部的对角线,把n边形拆分成若干三角形,不同的拆分数目用f[i]表示,f[i]即为Catalan数。f[2]=1,f[3]=1。【题解】#include<bits/stdc++.h>using namespace std;int f[100];void c(int n){ for(int i=2;i<=n-1;i++) { f[n]+=f[i]*f[n-i+1]; }}原创 2021-09-03 17:03:25 · 369 阅读 · 0 评论 -
算法_跳马问题
跳马问题【问题描述】在5*5格的棋盘上,有一只中国象棋的马,从(1,1)点出发,按日字跳马,它可以朝8个方向跳,但不允许跳出界或已跳过的格子上,要求跳遍每个棋盘。回溯与搜索的思想#include<bits/stdc++.h>using namespace std;int x[9]={0,-1,-2,-2,-1,1,2,2,1};//马的8种走向int y[9]={0,2,1,-1,-2,-2,-1,1,2};int xy[100][3];//记录走法bool b[6][6];原创 2021-09-04 20:13:41 · 336 阅读 · 0 评论 -
求m区间内的最小值P1440
尽量定义在全局,不然容易爆栈。表现为点击Run Code之后过一会自动结束程序,无法正常输出数据。原创 2024-03-15 10:14:33 · 871 阅读 · 0 评论 -
P1886 滑动窗口 /【模板】单调队列
现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。使用单调队列(双端队列),递增队列获取每个窗口的最小值,递减队列的队首获取每个窗口的最大值。,当判定队列empty之后就不会执行后续的条件判断语句。由于当队列为空的时候,队列中没有元素可以访问。将导致未定义行为,可能程序会崩溃或输出垃圾值。输出共两行,第一行为每次窗口滑动的最小值。在确认队列不空的情况下再访问队列中的元素。输入一共有两行,第一行有两个正整数。第二行为每次窗口滑动的最大值。原创 2024-03-15 10:15:17 · 1015 阅读 · 1 评论 -
P2947 [USACO09MAR] Look Up S(向右看齐)
【输出说明】奶牛 #1,#2 仰望奶牛 #3,奶牛 #4,#5 仰望奶牛 #6,奶牛 #3 和 #6 没有仰望对象。行,按顺序每行输出一只奶牛的最近仰望对象,如果没有仰望对象,输出。头奶牛的身高分别为 3,2,6,1,1,2。现在,每只奶牛都在向右看齐。求出每只奶牛离她最近的仰望对象。注意没有仰望对象的元素如何处理。头奶牛站成一排,奶牛。,之后每行输入一个身高。原创 2024-03-20 18:37:00 · 662 阅读 · 0 评论 -
P1175 表达式的转换
后缀标记法:书写表达式时采用运算紧跟在两个操作数之后,从而实现了无括号处理和优先级处理,使计算机的处理规则简化为:从左到右顺序完成计算,并用结果取而代之。平常我们书写的表达式称为中缀表达式,因为它将运算符放在两个操作数中间,许多情况下为了确定运算顺序,括号是不可少的,而后缀表达式就不必用括号了。行少一个运算符和一个操作数,最后一行只有一个数字,表示运算结果。保证不会出现计算乘方时幂次为负数的情况,故保证一切中间结果为整数。编写一个程序,完成这个转换,要求输出的每一个数据间都留一个空格。原创 2024-03-20 18:37:34 · 917 阅读 · 0 评论