![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
新手c语言
文章平均质量分 55
哆啦刘小洋
努力思考
展开
-
模板题---2.2(图论--最小生成树,floyd,二分图)
说人话的定义:图中点通过移动能分成左右两部分,左侧的点只和右侧的点相连,右侧的点只和左侧的点相连。每次都要找到“除了U里面的顶点,还剩余的顶点里面距离U集合最近的一个点,这个点加入U"。有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接!对于枚举的边,如果当前边的两个点都在生成树集合内,则这条边不要,否则就要.在带权连通图中,V是所有点的集合,U是已经生成最成的树的顶点的集合。思路:动态规划,从a到b的最短距离等于从a到k和k到b的距离之和。什么是二分图:(引用)原创 2022-12-30 16:37:03 · 374 阅读 · 0 评论 -
算法训练营----顺序栈,链栈
栈和线性表的区别在于操作的限制,。原创 2022-10-08 21:46:09 · 264 阅读 · 0 评论 -
01背包问题
题目如下给定一个大小为8的背包,再给4个体积分别为{2,3,4,5}的物品,他们的价值分别是{3,4,5,6}。请问,怎么样的装法使得背包可以装的价值最大?1,暴力法解决。顾名思义,将所有的组合列举出来,再找最大的那个就好了。说的简单,试一试能不能写出来呢?思路:对物品编号进行一个组合的穷举;比如4个物品,编号1,2,3,4组合有1 ,12,123,1234,124,13,134,14,2,23,234,24,34,4#include<cstdio>#include<io原创 2022-05-08 17:39:40 · 424 阅读 · 0 评论 -
最大公约数和最小公倍数(深入理解)
探讨最大公约数和最小公倍数1.两个数的最大公约数和最小公倍数一,最大公约数二,最小公倍数2.三个数的最大公约数和最小公倍数1.两个数的最大公约数和最小公倍数一,最大公约数“lcm 一般是 Least Common Multiple 的缩写,表示最小公倍数。””gcd一般指的是G——C——D的小写,表示最大公约数"如果通过穷举的方法来求两个数的最大公约数,那么可以这样做:#include<iostream>#include<cstdio>using namespac原创 2022-04-30 21:21:21 · 6948 阅读 · 1 评论 -
冒选快希桶归排序总结
排序大全1.插入排序2.希尔排序3.冒泡排序4.选择排序5.快速排序6.桶排序1.插入排序😤 插入排序是一种稳定的且快速的排序,比冒泡排序快就是了。它的思想就是一句话:❗️❗️每一次将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。给一个小小的示意图:下面给代码#include<cstdio>#include<cstring>int a[10] = { 3,1,7,9,4,0,-4,2,8,13 };void Insert_sort(原创 2022-04-28 10:24:57 · 124 阅读 · 1 评论 -
P1012 [NOIP1998 提高组] 拼数
这是一道比较特别的排序题,是字符串排序。自然,首先要找到排序的规律。规律:对任意两个字符串,比较他们的大小(这里指的是在这个题目的大小)。1.两个字符串一样长2.两个字符串不一样长(1)对于字符串一样长的。从第一个字符开始两两比较,找到第一个不相同的字符,然后比较出了大的那个字符所在的字符串就是最终大的字符串,那么就比出来了。如果直到比较到最后以一个字符还没有决出胜负,那么认为这两个字符串相等。(2)对于字符串不一样长的。有两种情况;1.两个字符串,一长一短,短的字符串整体等于长字符.原创 2022-04-27 07:52:04 · 390 阅读 · 0 评论 -
P1104 生日
这虽然直接用sort然后添加一个cmp函数就可以,#include<bits/stdc++.h>using namespace std;struct node//结构体排序{ string name; int year; int month; int data; int no;}a[110];int n;bool cmp(node a,node b){ if(a.year<b.year)return 1;//先比年 if(a.year>b.year)r.原创 2022-04-26 13:36:23 · 244 阅读 · 0 评论 -
P1152 欢乐的跳
#include<cstdio>#include<iostream>#include<cstring>using namespace std;int arr[1000];int temp[1000];int main(){ int n; cin >> n; for (int i = 0; i < n; i++) cin >> arr[i]; int sum = 0; for (int i = 0; i <.原创 2022-04-25 18:52:38 · 285 阅读 · 2 评论 -
P1116 车厢重组
思路:冒泡排序…虽然都对冒泡排序很熟悉,但是还是记录一下。从小到大排序:if(a[j]>a[j+i]),两个换位置,前面大于后面的,大的放后面从大到小排序:if(a[j]<a[j+1]),两个换位置,后面大于前面,大的放前面#include<cstdio>#include<iostream>using namespace std;int train[10000];//这道题搞得好像很复杂,起始就是一个冒泡排序,只不过冒泡排序的时候加了一步,就是每次交换.原创 2022-04-25 17:14:42 · 719 阅读 · 0 评论 -
快速排序(初理解)
快速排序1.快速排序的理解2.快速排序的代码1.快速排序的理解刚刚学了一个快速排序,来记录一下自己的理解:快速排序是内排序中平均性能较好的排序,思想是每趟排序时选取一个数据(通常用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它的左边,所有比它大的数都放到它的右边.。实际上就是一个递归过程,每趟排序完都可以保证把当前排序的元素达到一个这种状态:这个元素左边的所有元素都比它小,这个元素右边的所有元素都比他大…可想而知,每一次排序完当前元素都会有这个性质:“左边比我小,右边比我大”。那么最后一次原创 2022-04-22 17:02:08 · 395 阅读 · 0 评论 -
快速幂的大数运算
快速幂运算1.什么是快速幂2.快速幂的“小数”运算3.高精度(大数)的快速幂1.什么是快速幂快速幂,是指在进行幂运算的时候,用一种快速方法得出答案。比如,要求2^100的值,那按照最简单的方式,就是一个一个2去相乘,然后最终得到答案,那么这样就要计算100次,非常浪费时间,那么快速幂就是使用一种技巧使得将其计算次数减少,快速得到答案。2.快速幂的“小数”运算对于系统内置类型的整型,暂且叫他“小数”,这个时候进行快速幂运算,代码如下:#include<cstdio>#include&l原创 2022-04-21 10:36:22 · 627 阅读 · 0 评论 -
高精度(大数运算)(高手绕路)
高精度算法1.什么是高精度(废话一堆懂的别看直接跳过)1.什么是高精度(废话一堆懂的别看直接跳过)高精度,高精度,顾名思义,就是很高的精度。。咳,实际上,在实际应用中,我们对于数字的使用,大概在千万以内就足够了,比如算人数,数钱,称重量等等,,,但是在数学领域,动辄上亿上亿亿上亿亿亿亿亿亿。。。这时候就要高精度了。因为计算机最大的内置类型unsigned long long int也才只有16个字节,也就是0-2^128.类型取值范围char-128~127unsigned原创 2022-04-19 22:10:13 · 1595 阅读 · 1 评论 -
P4924 [1007]魔法少女小Scarlet
这个题做了半天(3,4,5个小时吧。)实际上和没理解题意有很大关系,没有理解到一个问题的关键:“相对坐标”。将这个初中就学的“相对坐标”理解好,这个题分分钟搞定。先贴个图模拟一下:int a[501][501]存放原始数组int b[501][501]存放临时数组我们规定,从第1行开始,先将第1行顺时针变换后的元素值存放到数组b。然后将第2行开始将这一行的元素顺时针旋转后的值给数组b,一直全部遍历完数组a的元素。最后数组b存放的就是数组a所有元素旋转90度的结果。#include<s.原创 2022-04-15 12:30:11 · 122 阅读 · 0 评论 -
c语言二分查找
二分查找1.左闭右闭区间2.左闭右开区间写二分查找的时候每次都犹犹豫豫,修修改改,总是写不好,所以想想着磨刀不误砍柴工,静下来好好研究一下平时看起来很简单的算法.二分查找适用找有顺序的数据,可以是递增的,也可以是递减的二分查找的时间复杂度,最好的情况是一次找到,o(1),最坏的情况是一直一直折半直到只剩一个元素,第一次N/1,第二次N/2,…N/2^x=1,所以x=log2N。所以最差的情况就是o(log2N)。1.左闭右闭区间int a[10]={1,2,3,4,5,6,7,8,9,10}原创 2022-04-12 15:55:18 · 1497 阅读 · 2 评论 -
P1042 [NOIP2003 普及组] 乒乓球
这个题目有几个注意的地方。。乒乓球比赛在11分制的情况下,当一个选手的比分大于等于11分且两人的分差大于等于2分才决出胜负。比如甲乙的比分分别是 11:10,那么虽然甲到了11分,但是还不算赢,还要加时,一直到双方分差大于等于2才算赢。比如11:9,那么甲赢。13:11,甲赢.。那么21分制同理。存放W,L的数组要开的足够大,不然拿不到满分下面是我小刘的代码,试了三次才满分。写的不是很好,没有优化,仅供参考。想了一下实际上只需要一个数组就足够了,,,#include<stdio.h&g.原创 2022-04-12 00:16:39 · 609 阅读 · 0 评论 -
多维数组的开辟
指针和数组1.指针和数组的关系(1)一维数组和一维指针的关系小结(2) 二维数组和二维指针的关系2动态开辟数组(1)一维的开辟1.指针和数组的关系(1)一维数组和一维指针的关系我们知道,指针存放的是变量的地址。int a=5;int *p;p=&a; //p的值就是整型变量a的地址printf("%d",*p); //输出5那么数组呢?一维数组的数组名是数组的起始地址,那么会不会想到,数组名是不是一个指针?很接近了int a[10]={1,2,3,4,5,6,7,8,9,原创 2022-04-11 16:39:18 · 352 阅读 · 4 评论 -
一维数组和一维指针
码龄超过两个星期的可以划走了。新手练习一下写博客。写了一些一维数组的初始化和一维指针的基础知识原创 2022-04-11 00:51:04 · 1736 阅读 · 4 评论