总有那么几天不想学习
qq_52051345
博客转移至www.acming.net和51codefly.com
展开
-
关于优先队列
在C++中,priority_queue默认是less(这一点和sort相同),但是打印出来的排序序列却是从大到小的,和sort恰恰相反。#include <iostream>#include <cstdio>#include <queue> using namespace std;int main(){ priority_queue<int...原创 2019-11-25 09:11:15 · 99 阅读 · 0 评论 -
最小生成树
下面以洛谷P3366为例prim算法思想:Prim算法和dijkstra最短路很像。Prim的思想是将任意节点作为根,再找出与之相邻的所有边,再将新节点更新并以此节点作为根继续搜,维护一个数组:dis,作用为目前最先生成树中所有顶点到还未加入最小生成树点的最短距离。kruskal算法思想:先把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(用并查集来判...原创 2019-10-30 20:47:49 · 108 阅读 · 0 评论 -
链式前向星
#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int MAXN = 1005;struct Edge { int w; int to; int next; //next[i]表示与第i条边同起点的上一条边的储存位置}edge...原创 2019-10-25 11:49:52 · 109 阅读 · 0 评论 -
字典树(Trie树)
基本概念字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。算法分析初始化一棵空Trie仅包含一个根节点,该点的字符指针均指向空。int p = 1;插入当...原创 2019-10-14 10:21:27 · 217 阅读 · 0 评论 -
结构体数组排序简单版
#include<iostream>#include<string>#include<algorithm>using namespace std;struct Student{ string name; int score[4];};int cmp(Student x, Student y){ return x.name < y.n...原创 2019-02-18 19:16:38 · 246 阅读 · 0 评论 -
计算星期几
已知1年1月1号是星期一①暴力求解:#include<iostream>#include<string>using namespace std;string weekday[7] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", &q原创 2019-02-18 16:06:08 · 524 阅读 · 0 评论 -
C++ getline函数用法
在C++中本质上有两种getline函数:第一种:在头文件中,是iostream类的成员函数。第二种:在头文件中,是普通函数。第一种: 在中的getline()函数有两种重载形式:istream&amp;amp;amp; getline (char* s, streamsize n );istream&amp;amp;amp; getline (char* s, streamsize n, char delim );...原创 2019-02-18 14:41:15 · 3233 阅读 · 0 评论 -
寻找字符串
某天,蒜头君和花椰妹在公园里散步,走着走着,我的天!他们各自都捡到了一串漂亮的字符串,然而蒜头君好奇心比较重,他想知道自己的字符串在花椰妹的字符串中出现了多少次,例如花椰妹的字符串为abababa,蒜头君的字符串为aba,那么蒜头君的字符串在花椰妹的字符串中出现了3次。蒜头君一向比较傲娇,于是向你请教,你可以帮帮他么?输入格式输入包含两行,第- -行为花椰妹捡到的字符串,第二行为蒜头君捡到的字...原创 2019-02-18 14:28:31 · 173 阅读 · 0 评论 -
升级版三角形
这次我们输出一个稍微复杂的三角形,输入一个大写字母(A-Z)或者一个数字(1-9)比如输入是F的时候,输出: A ABA ABCBA ABCDCBA ABCDEDCBAABCDEFEDCBA输入3时,输出: 1 12112321#include <iostream>using namespace std;int main(){ ...原创 2019-02-18 13:23:10 · 150 阅读 · 0 评论 -
strin()函数
String(number, character)String 函数的语法有下面的命名参数:number 必要参数;Long。返回的字符串长度。如果 number 包含 Null,将返回 Null。character 必要参数;Variant。为指定字符的字符码或字符串表达式,其第一个字符将用于建立返回的字符串。如果 character 包含 Null,就会返回 Null。注意number...原创 2019-02-18 12:36:51 · 375 阅读 · 0 评论 -
用栈解决汉诺塔问题
#include <iostream>#include <stack>using namespace std;stack<int> S[3];void move (int x, int y){ int temp = S[x].top(); S[x].pop(); S[y].push(temp); cout <<...原创 2019-02-22 12:39:59 · 499 阅读 · 0 评论 -
火车出入站(栈)
给定 n 个数的排列 a 和一个栈,n 个值的入栈顺序为 1,2,⋯n,判断出栈顺序是否可以是排列 a。#include <iostream>#include <vector>#include <stack>using namespace std;int main() { int n; cin >> n; vect...原创 2019-02-22 11:54:12 · 1016 阅读 · 0 评论 -
结构体数组排序复杂版
#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;algorithm&gt;using namespace std;struct Student{ string name; int score[4];};int cmp(Student x, Student y){ if (x.score[0] !=原创 2019-02-18 19:29:49 · 276 阅读 · 0 评论 -
洛谷P1136火柴棒等式
题目描述:给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:注意:1.加号与等号各自需要两根火柴棍;2.如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C>=0);3.n根火柴棍必须全部用上;输入样例:18输出样例:9#include<s...原创 2019-02-13 13:07:43 · 252 阅读 · 0 评论 -
hihoCoder #1505题:小Hi和小Ho的礼物
某人有N袋金币,其中第i袋内金币的数量是Ai。现在他决定选出2袋金币送给小Hi,再选2袋金币送给小Ho,同时使得小Hi和小Ho得到的金币总数相等。他想知道一共有多少种不同的选择方法。具体来说,有多少种下标四元组(i, j, p, q)满足i, j, p, q两两不同,并且i < j, p < q, Ai + Aj = Ap + Aq。例如对于数组A=[1, 1, 2, 2, 2],...原创 2019-03-28 12:14:16 · 264 阅读 · 0 评论 -
C++中unique函数的使用
unique的作用是“去掉”容器中相邻元素的重复元素,这里的去除不是真正的去除,而是将重复的元素添加到容器末尾,而返回值是去重之后的尾地址。例如:#include <bits/stdc++.h>using namespace std;int main(){ int a[10]={2,2,1,1,1,3,4,5,5,5}; int pos = unique(a, a + 1...原创 2019-03-27 19:08:47 · 208 阅读 · 0 评论 -
整除
蒜头君想要找到一个正整数 X,使得 1 到 45 这 45 个整数中,至多有一个整数不能整除 X。满足条件的 X 显然有很多个,于是蒜头君想请你找到最小的满足条件的 X。#include <iostream>#define LL long longusing namespace std;LL gcd(LL x, LL y){ return y ? gcd(y, x % y)...原创 2019-03-18 12:12:53 · 148 阅读 · 0 评论 -
C++STL解决约瑟夫环问题
#include <iostream>#include <queue>using namespace std;int main(){ int n; cin >> n; queue<int> q; for (int i = 1; i <= n; i++) { q.push(i); } int cur = 1; whi...原创 2019-02-25 15:23:57 · 916 阅读 · 0 评论 -
栈
示例:#include <stack>#include <iostream>using namespace std;int main() { stack<string> s; s.push("123456"); s.push("aaaaa"); s.push("bbbbbb"); while (!s.empty(..原创 2019-02-19 20:55:25 · 91 阅读 · 0 评论 -
如何手动实现一个栈
手动实现一个栈#include &lt;iostream&gt;using namespace std;struct Stack{ int data[10000]; int top = -1; void push(int x) { top++; if (top &lt; 10000) { ...原创 2019-02-19 20:15:23 · 368 阅读 · 0 评论 -
浮点数排序
我们有N个正浮点数,均小于10000.0。现在需要将这些浮点数按照离它最近的整数的差从小到大排序,浮点数与距离最近的整数的差越小,这个浮点数的排位越靠前;如果差相等,按照浮点数的值从小到大排序。#include<iostream>#include<cmath>#include<algorithm>#define EPSILON 1e-6using na...原创 2019-02-19 12:53:43 · 1102 阅读 · 0 评论 -
洛谷P1478陶陶摘苹果升级版
题目描述又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在s<0之前最多能摘到多少个苹果。现在已知n个苹果到达地上的高度xi,椅子的高度a,陶陶手伸直的最大长度b,陶陶所剩的力气s,陶陶摘...原创 2019-02-13 15:28:06 · 414 阅读 · 0 评论 -
C语言sprintf和sscanf的用法总结
一、sprintf()1.sprintf用于格式化字符串把变量打印到字符串中,从而获得数字的字符形式,这样不需要手工转换。例如char c[100];int k=255;sprintf(c,"%d",k);//c包含"255"2.sprintf用于进制转换可以方便地得到变量的十六进制和八进制字符序列,再稍加处理即可得到每一位的值。char c[100];int k=255;...转载 2019-02-08 11:17:16 · 334 阅读 · 0 评论 -
C语言qsort函数的使用
**qsort函数stdlib.h头文件中,函数原型为void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const **void ,const void ));base 为要排序的数组nelem 为要排序的数组的长度width 为数组元素的大小(一字节为单位)默认是从小到大排序的!( Comp)(const void ...原创 2019-02-01 12:03:54 · 888 阅读 · 0 评论 -
C语言实现对斐波那契数列求和
Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)…。如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列...原创 2018-12-05 23:49:47 · 12742 阅读 · 1 评论 -
C语言利用链表插入数据
代码及注释:#include<stdio.h>#include<stdlib.h>//创建结构体表示链表结点类型 struct node{ int data; struct node *next;};int main(){ struct node *head, *q, *p, *t; int i, n, a; printf("请输入节点数:");...原创 2018-12-12 19:59:03 · 5032 阅读 · 0 评论 -
用C语言打印巴斯卡三角
代码:int main(){ int i, j, k; //i控制行数,j控制列数,k控制空格数 int n; int **a;//动态申请分配内存 scanf("%d", &amp;n); a = (int**)malloc(sizeof(int*)*n); for(i=0; i&lt;n; i++) { a[i] = (int*)malloc(sizeof(int)*...原创 2018-12-05 20:43:17 · 347 阅读 · 0 评论 -
用C语言打印杨辉三角
代码:#include<stdio.h>#include<stdlib.h>int main(){ int i, j; //i控制行数,j控制列数 int n; int **a;//动态申请分配内存 scanf("%d", &n); a = (int**)malloc(sizeof(int*)*n); for(i=0; i<n; i++)...原创 2018-12-05 20:27:55 · 545 阅读 · 0 评论 -
用递归方法求C (n, m)
代码如下:#include<stdio.h>#include<stdlib.h>//函数功能:求n的阶乘 int CK(int n){ if(n == 0||n == 1) { return 1; } else { return n * CK(n-1); }}//函数功能:求C(n,m) int Cre(int n, int m){ ...原创 2018-12-05 20:22:38 · 1408 阅读 · 0 评论 -
C语言在同一坐标中绘制余弦曲线和直线
题述:在同一坐标中绘制余弦曲线和直线 x = 45 * y + 31。实现代码如下:#include<stdio.h>#include<math.h>int main (){ int x, m1, m2; double y; for (y=1; y>=-1; y-=0.1) { m1 = acos(y) * 10; m2 = 45*y+31;...原创 2018-12-07 19:49:21 · 699 阅读 · 0 评论 -
C语言中报数(1~3)问题(约瑟夫环问题)
题目描述:n个人围成一圈,顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?代码如下:#include<stdio.h>#include<stdlib.h> //报数函数 void count(int n){ int i, k, m; int *num; num = (int*)malloc(sizeof(...原创 2018-12-05 09:16:07 · 2977 阅读 · 0 评论 -
用C语言打印任意4*N阶魔方矩阵
4 * N阶魔方矩阵与奇数魔术方阵相同,各行、各列与各对角线的和相等,而这次方阵的维度是4的倍数。其规律如下:简单的说,就是一个从左上由1依序开始填,但遇对角线不填,另一个由左上由16开始填,但只填在对角线,最后只要将两个合起来问题就解决了。代码如下:#include<stdio.h>#include<stdlib.h>void N_4mf(int n, in...原创 2018-12-05 08:12:44 · 1146 阅读 · 0 评论 -
用C语言输出任意N阶奇数魔方矩阵
将1 ~ N(为奇数)的数字排列在N*N的方阵上,且各行、各列与各对角线的和必须相同,如下所示:奇数魔方矩阵规律:(1) 自然数1出现在第 1 行的正中间;(2)若填入的数字在第-行(不在第 n 列),则下一个数字在第 n 行(最后一行)且列数加 1 (列数右移一列) ;(3)若填入的数字在该行的最右侧,则下一个数字就填在,上一行的最左侧;(4) 一般地,下一个数字在前一个数字的右上方...原创 2018-12-04 21:08:00 · 5692 阅读 · 1 评论 -
C语言利用数组模拟链表
代码及注释:#include<stdio.h>int main(){ int data[101]; int right[101]; int i, n, len, t; printf("请输入节点数:"); scanf("%d", &n); printf("请输入%d个数:", n); for (i=1; i<=n; i++) { scanf("%...原创 2018-12-12 22:46:09 · 377 阅读 · 0 评论 -
C语言实现选择、冒泡、直接插入、归并、希尔、快速、堆排序与顺序、二分查找排序
①选择法排序#include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;void select_sort(int *x, int n){ int i, j; int temp; int min; for (i=0; i&amp;amp;amp;amp;amp;lt;n-1; i++) { min = i;//假设当前下标为i的数最小 for (j=i+原创 2018-12-06 00:27:39 · 613 阅读 · 0 评论 -
小学奥数
#include<stdio.h>int a[10];int book[10];int total = 0;void DFS(int step){ int i; if (step == 10&&a[1] * 100 + a[2] * 10 + a[3] + a[4] * 100 + a[5] * 10 + a[6] == a[7] * 100 + a[8]...原创 2018-12-18 11:30:17 · 325 阅读 · 0 评论 -
C语言打印万年历(1990年以后)
代码及注释:#include&lt;stdio.h&gt;int numday[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};//闰年与非闰年每月天数 //函数功能:判断闰年与否 int LeapYear(int year){ return (year...原创 2018-12-11 11:54:17 · 999 阅读 · 0 评论 -
用C语言解决借书方案问题。
题目描述:小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?分析:实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。代码如下:#include<stdio.h>int main(){ int i, j, k;//对书编号i, j, k int count; count = 0; for (i=1; i<=5...原创 2018-12-10 09:26:48 · 1555 阅读 · 0 评论 -
C语言解决汉诺塔问题
题目描述:河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一...原创 2018-12-13 15:34:56 · 266 阅读 · 2 评论 -
C语言解决猴子吃桃问题
题目描述:猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第10天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子。代码及注释:①循环方法解决#include<stdio.h>int main(){ int i; int sum; for (i=0; i&l...原创 2018-12-13 14:23:06 · 8786 阅读 · 2 评论