算法
雪国恋人
雪国人
展开
-
【知识小帖士 2】细致分析!C++字符串的接收问题
【cin的问题】我们通常使用 cin 来做输入接收,但是使用cin在接收字符串的时候有一个问题:它不能接受带有空格的字符串。因为遇到空格,cin认为输入结束。#include <iostream>using namespace std;#define N 100int main(){ char a[N]; cin>>a; cout&...原创 2019-03-20 12:40:52 · 407 阅读 · 0 评论 -
【NOIP算法:回溯】基础问题3:组合+全排列问题
问题描述求从m个数中取r个数,(m、r都是大于0的正整数,且r<m<=15)。输入格式: 第一行 m r 第二行 输入m个正整数输出格式: 所有可能的组合的全排列。【样例输入】: 3 2 1 2 3【样例输出】: 3 2 2...原创 2019-05-30 11:45:30 · 332 阅读 · 0 评论 -
【NOIP算法:回溯】基础问题2:全排列问题
问题描述输入n,输入n个元素,输出n个数的全排列。(0<n<=15)【样例输入】: 3 1 2 3【样例输出】: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1参考代码#in...原创 2019-05-30 11:26:39 · 385 阅读 · 0 评论 -
【常用函数5】数组元素逆转函数 reverse()
前言:前面我们介绍了reverse()函数能够将字符串逆转,reverse函数也能够将一般的 整数型、浮点型、字符型 数组元素逆转。参考代码:包含头文件:#include <algorithm>#include<iostream>#include<algorithm>using namespace std;int main(){ int...原创 2019-04-30 09:23:56 · 2036 阅读 · 0 评论 -
【常用函数6】fill()函数的使用
前言前面我们讲解了memset()函数,我们知道memset()函数是“按字节填充值”的,当填充整数型数组时,只能填充0和-1。那么有没有可以填充任意值的函数呢?有!这就是我们要给大家介绍的fill()函数,我们称之为“按元素填充值”函数。代码包含的头文件:#include<algorithm>使用方法:fill(arr, arr + n, 要填入的值); ...原创 2019-05-05 15:38:28 · 2885 阅读 · 0 评论 -
【常用函数4】字符串逆转函数 strrev()、reverse()
一、strrev( ) 函数头文件:#include<cstring> 或 #include<string.h>#include<iostream>#include<cstring>using namespace std;#define N 20int main(){ char ch[N]="hello!"; strrev(...原创 2019-04-29 14:07:17 · 1135 阅读 · 0 评论 -
【常用函数2】sort()函数的简单实用方法
排序是我们最常遇到的编程问题,事实上在<algorithm>头文件中就包含一个排序函数:sort()用法一:一维数组,升序#include <iostream>#include <algorithm>using namespace std;int main(){ int a[10]={11,43,1,45,67,89,33,456,2,...原创 2019-04-19 22:04:26 · 305 阅读 · 0 评论 -
【常用函数3】itoa()和atoi() 函数的使用方法
前言数值型字符串与对应的数之间的相互转换,在我们题目中的经常使用,例如:“12345” 转换为对应的整数值 12345,567 转换为对应的字符串 “567”。今天先来讨论,整数型字符串与其对应整数值之间的转换函数:itoa,atoi。浮点数下次讨论。从函数名称你也能猜出 a:ASCII码,i:int单个数与对应字符之间的转换不论是单个字符,还是字符串,与对应数字之间的转换本质上都是...原创 2019-04-24 13:41:09 · 443 阅读 · 0 评论 -
【NIOP算法:回溯】基础问题1 :组合问题
前言排列组合问题是NOIP竞赛中非常常见且难度较大的一类题目,主要有两类:组合问题、全排列问题。这里我们先讨论组合问题,全排列问题后面再讨论。问题数组A的长度为N(0<N<=15),从这N个数中取出M个数。问:共有几种取法?并列出每种取法取出的数据组合。注意:我们这里不讨论数组中重复数据的问题(即:一个组合中可以有重复的数据)。例如:int A[4]={1,2,3,4}...原创 2019-04-23 15:46:12 · 635 阅读 · 0 评论 -
【NOIP算法】图论 - Dijkstra算法
概述迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。图论的内容属于较为复杂的算法问题,看了一些博客文章,基本都描述冗长,只好自己来写了。我试图用简洁的语言、清晰的图示、明确的步骤带你用一个半天精力搞清楚这个问题。图解:Dijkstra算法的基本思想以上图G1为例,对对迪杰斯特拉进行算法演示(以第4个顶点D为起点)引进两个集合S和U。...原创 2019-04-27 17:17:37 · 377 阅读 · 0 评论 -
【知识小贴士3】cin 与 cin.getline()函数同时使用时的一个疑问
问题前面我们说过,cin在接收字符串时不能接收含有空格的字符串,所以我们使用cin.getline()函数。但是当如果在cin.getline()函数前面用到cin,你会发现出问题了!!!!,如下:#include <iostream>using namespace std;int main(){ int a; char ch[100]; cin...原创 2019-04-18 14:40:13 · 928 阅读 · 0 评论 -
【常用函数1】memset()函数的使用
1、概述memset()函数,称为按字节赋值函数,使用时需要加头文件 #include<cstring>或者#include<string.h>。通常有两个用法:(1)用来给整形数组整体赋值为0或者-1;(2)给字符数组整体赋值2、整形数组整体赋值整形数组整体赋值为0或-1:#include <iosream>#include <...原创 2019-04-11 16:02:10 · 772 阅读 · 0 评论 -
【NOIP算法】大数除法
我们这里研究的大数除法是:被除数是高精度数,除数是低精度数分析1)除法是从高位开始的,所以字符型被除数不用逆序转存到整数数组,顺序转存即可2)余数*10+本位的数 作为下一个被除数参考代码#include <iostream>#include <cstring>using namespace std;#define N 200in...原创 2019-03-23 15:08:39 · 485 阅读 · 0 评论 -
【NOIP算法】大数相乘
前面我们介绍了大数的相加、相减,我们知道了为什么计算机无法直接做大数的运算,同时我们也知道我们做大数运算程序的方法。本节课,我们介绍大数相乘。题目:求两个不超过200位的非负整数的积【输入】:有两行,每行是一个不超过200位的非负整数,可能有多余的前导0【输出】:一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342【样例输入】5000...原创 2019-03-22 15:03:36 · 515 阅读 · 0 评论 -
【NOIP算法】大数的减法
题目:大整数的减法,求两个大的正整数相减的差输入:共2行,第1行是被减数a,第2行是减数b(a>b).每个大整数不超过200位,不会有多余的前导零输出:一行,即所求的差【样例输入】9999999999999999999999999999999999999999999999【样例输出】999999999999999999999999990000000000分...原创 2019-02-13 20:32:10 · 516 阅读 · 0 评论 -
【NOIP算法】大数的加法
题目:求两个不超过200位的非负整数的和输入:有两行,每行是一个不超过200位的非负整数,可能有多余的前导0输出:一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342【样例输入】222222222222222222222223333333333333333333333【样例输出】55555555555555555555555...原创 2019-02-13 20:16:56 · 700 阅读 · 0 评论 -
【知识小贴士】未知个数的多个字符串接收,以‘\n’结束
接受多个字符串,最终以‘\n’结尾,怎么实现#include<iostream>#include<cstring>using namespace std;#define N 10 int main(){ string str[N]; int i=0; char ch; while(cin>>str[i]) { if((ch=getc...原创 2019-10-08 10:37:40 · 406 阅读 · 0 评论