![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 53
YouthUpward
记得爱护眼睛
展开
-
stringstream实现 数字串与数字相互转换
这两段代码还是蛮常用的,主要区别是在调用函数时看你返回什么。原创 2022-09-26 10:47:44 · 481 阅读 · 1 评论 -
五元组评价算法实现简易五子棋【人工智能】
五子棋游戏算法设计,方法不限。 以两人为一组,分为甲方和乙方对弈。各自设计自己的算法: 针对对方下的每一步骤棋落子,由算法给出相应的本方落子,最终胜者只有一个。原创 2022-07-06 10:05:01 · 2933 阅读 · 0 评论 -
八数码问题【人工智能实验】
八数码问题,也称九宫格问题,是经典的状态空间搜索问题。原创 2022-07-06 09:45:14 · 13306 阅读 · 8 评论 -
基于算符优先文法的逆波兰表达式及计算
将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式, 并计算用逆波兰式来表示的算术表达式的值。原创 2021-07-14 12:41:09 · 745 阅读 · 0 评论 -
单链表基本操作代码实现【数据结构笔记】
带头结点原创 2022-05-22 18:36:36 · 662 阅读 · 0 评论 -
set 存放类或结构体的打印
遍历存放类或结构体的set在做传教士和野人问题时,用到了set存放类,所以在这里先测试一下set的功能是否正常。在正确重载 " < " 后,打印变成了一个问题。本来是想再重载 " << " 或者输出运算符,没成功。后来又在网上找了替代办法。关键代码 //遍历集合 for(set<State>::iterator it = s.begin(); it != s.end() ;it++) { State tmp = (State)(*it); //将其赋值给一个临时原创 2022-04-24 19:37:40 · 515 阅读 · 0 评论 -
memcpy( )函数复制二维数组 & memcmp( )函数比较二维数组
ps: 两个函数的头文件都为#include <string.h>memcpy( )函数memcpy( )是C/C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。#include <stdio.h>#include <string.h>int ma原创 2022-04-22 09:58:12 · 5443 阅读 · 0 评论 -
STL 栈存储类 C++
#include <iostream>using namespace std;#include <cstdio>#include <stack>//状态类class State{private: int x; int y; int z;public: State(int a, int b, int c) //定义构造函数 { x = a; y = b; z = c; } void print() //定义打印方法原创 2022-04-14 12:43:36 · 872 阅读 · 0 评论 -
蓝桥杯 卡片 省赛
思路统计从1-n的0-9的数字,直到某个数字>=2021。#include <iostream>using namespace std;#include <string>#include <sstream>#include <map>map <char, int>m;void i2s(string &str,int n){ stringstream ss; ss << n; ss >>.原创 2022-04-08 23:57:49 · 159 阅读 · 0 评论 -
蓝桥杯 算法提高 自然数拆分 回溯
题目HJQ同学发现了一道数学题,要求n拆分成若干自然数和的方案输入格式 输入n输出格式 输出n拆分成若干自然数和的方案,每个方案一行数据规模和约定 n <= 10资源限制内存限制:256.0MB C/C++时间限制:1.0s思路如图树形结构,回溯+剪枝。代码#include <iostream>using namespace std;#include <vector>#include <numeric>vector<原创 2022-04-02 22:31:30 · 994 阅读 · 0 评论 -
蓝桥杯 算法提高 奥运会开幕式 deque
题目学校给高一(三)班分配了一个名额,去参加奥运会的开幕式。每个人都争着要去,可是名额只有一个,怎么办?班长想出了一个办法,让班上的所有同学(共有n个同学)围成一圈,按照顺时针方向进行编号。然后随便选定一个数m,并且从1号同学开始按照顺时针方向依次报数,1, 2, …, m,凡报到m的同学,都要主动退出圈子。然后不停地按顺时针方向逐一让报出m者出圈,最后剩下的那个人就是去参加开幕式的人。 要求:用环形链表的方法来求解。所谓环形链表,即对于链表尾结点,其next指针又指向了链表的首结点。基本思路是先创建原创 2022-04-02 19:34:15 · 116 阅读 · 0 评论 -
蓝桥杯 算法提高 全排列 next_pertumutation
题目输出自然数1输出自然数1到n所有不重复的排列,即n的全排列。到n所有不重复的排列,即n的全排列。资源限制内存限制:256.0MB C/C++时间限制:1.0s代码#include <iostream>using namespace std;#include <cstdio>#include <vector>#include <algorithm> //next_pertumutation头文件int main(){ int原创 2022-04-01 22:15:21 · 601 阅读 · 0 评论 -
map 两数之和
size():获取元素个数empty():判空find(key):在map中查找key并返回其迭代器count(key):在map中找key的数量,由于每个key都是唯一的,故只返回0或1m[key] = value代码#include <iostream>using namespace std;#include <map>#include <vector>vector<int> v;map<int, int>m;/.原创 2022-04-01 11:34:49 · 616 阅读 · 0 评论 -
蓝桥杯 算法训练 砝码称重 回溯
题目小明捡到了一架没有游标的天平和N个标有重量的砝码,于是他想知道他能够称出多少种不同的重量(假设只能将砝码放在一侧)。输入格式 输入的第一行包含一个正整数N,表示有N个砝码。接下来一行有N个正整数,表示N个砝码的重量。输出格式 输出一行,包含一个整数,表示能够称出多少种不同的重量。样例输入31 2 3样例输出6数据规模和约定 N<16,砝码重量<=1000。思路这是一个回溯法求子集和的问题。如图,以砝码重量为[1,2,3]为例。构造一棵子集树并在结点求和。原创 2022-04-01 09:48:23 · 1392 阅读 · 2 评论 -
回溯 打印 全排列
#include <iostream>using namespace std;#include <string>//k:当前的交换位置(关注点),与其后的元素交换void dfs(string data,int k){ if (k == data.length()) cout << data << endl;; for (int i = k;i < data.length();i++) { swap(data[i],data[原创 2022-03-31 16:45:27 · 395 阅读 · 0 评论 -
vector 实现二维数组
代码#include <iostream>using namespace std;#include<vector>vector<int> res[100];//测试一下二维数组的用法int main(){ int tmp; for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { cin >> tmp; res[i].push_back(tmp)原创 2022-03-31 11:24:48 · 725 阅读 · 0 评论 -
蓝桥杯 算法训练 矩阵乘法
题目问题描述 输入两个矩阵,分别是ms,sn大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2 3 21 0 -11 1 -30 31 23 1样例输出-3 2-8 2提示矩阵C应该是m行n列,其中C(i,j)原创 2022-03-29 12:18:26 · 90 阅读 · 0 评论 -
蓝桥杯 算法提高 周期字串
题目问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。 我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。 例如: 字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。 右右现在想给他的原创 2022-03-29 10:19:27 · 153 阅读 · 0 评论 -
蓝桥杯 算法提高 回文串
题目问题描述 一个正整数N被称为回文数,当且仅当N在十进制下,正着读和反着读是一样的。 如12321是回文的,而12320不是。 现在让你求出第K小的回文数。(第0小的是 1,第1小的是 2)输入格式 输入一个数K。输出格式 一个数字N,为第K小的回文数。样例输入19样例输出111数据规模和约定 对于30% 的数据K≤10000; 对于100% 的数据K≤109。思路 以 4位数 为例,如果它是回文数的话,那么它...原创 2022-03-28 20:48:19 · 984 阅读 · 0 评论 -
递归求最大公约数和最小公倍数
#include <iostream>using namespace std;//输出两个数的 最大公约数 和 最小公倍数//递归求最大公约数int gcd(int a,int b){ //递归出口 if (a == 0) return b; return gcd(b%a,a);}int main(){ int a, b; cin >> a >> b; int temp = gcd(a, b); //最大公约数 cout &.原创 2022-03-28 09:15:57 · 819 阅读 · 0 评论 -
埃氏筛 C++
在 求指定范围内的质数个数 问题中,一般有试除法和筛法两大类。 试除法【时间复杂度为O(n^2)】容易超时。筛法中又有朴素筛、埃氏筛、欧拉筛。虽然欧拉筛【时间复杂度为O(n)】是线性的最优的,但是在理解和写比较复杂。一般用埃氏筛【时间复杂度为O(n loglogn)】就够了,埃氏筛代码简洁、更易理解。且本篇的埃氏筛还有一处细节优化。埃氏筛原理 先假设每个数都是质数。从 2 开始,2是质数,那么2的倍数:4、6、8、10、12、14、16... ...原创 2022-03-27 15:25:46 · 3088 阅读 · 0 评论 -
蓝桥杯 第几个幸运数 set
一、题目到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505。去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。输出输出一个整数表示答案原创 2022-03-27 11:33:52 · 135 阅读 · 0 评论 -
蓝桥杯 后缀字符串 map
目录一、题目二、思路三、代码四、参考一、题目一天蒜头君得到 n 个字符串 ,每个字符串的长度都不超过 10。蒜头君在想,在这 n个字符串中,以 为后缀的字符串有多少个呢?输入格式第一行输入一个整数 n。接下来 n行,每行输入一个字符串 。输出格式输出 n 个整数,第 i个整数表示以 为后缀的字符串的个数。数据范围对于50%的数据,。对于100%的数据,。所有的字符串仅由小写字母组成。样例输入...原创 2022-03-26 22:35:40 · 715 阅读 · 0 评论 -
蓝桥杯 算法训练 斐波那契串
目录一、题目二、思路三、代码四、总结五、参考一、题目 斐波那契串由下列规则生成: F[0] = "0"; F[1] = "1"; F[n] = F[n-1] + F[n-2] (n≥2,+ 表示连接) 给出一个由0和1构成的串S和一个数n,求出F[n]中S出现的次数。输入格式 第一行一个数n。 第二行一个01串S。输出格式 答案。样例输入9610110101101101样例输出7540113804746346428原创 2022-03-22 14:20:21 · 1762 阅读 · 3 评论 -
蓝桥杯 历届真题 排列序数【第五届】【决赛】【A组】
一、题目如果用a b c d这4个字母组成一个串,有4!=24种,如果把它们排个序,每个串都对应一个序号: abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bacd 6 badc 7 bcad 8 bcda 9 bdac 10 bdca 11 cabd 12 cadb 13 cbad 14 cbda 15 cdab 16 cdba 17 …现在有不多于10个两两不同的小写字母,给出它们组成的串原创 2022-03-18 15:04:17 · 861 阅读 · 0 评论 -
蓝桥杯 算法训练 按位输出数字
一、题目设计一个程序,从键盘输入一个不超过5位的正整数(即1~99999),按顺序输出其所有数字,中间用一个空格格开,要求使用if语句编写。例如,如果用户从键盘输入123,则程序输出1 2 3。输入格式 输入一个整数n输出格式 输出这个整数的每位数字,以空格隔开。样例输入123样例输出1 2 3数据规模和约定1<=n<=99999二、思路取余,得到低位依次压入栈,再除10去掉低位,循环这个过程直到最后一位。for (;;) {//这个处理办法很像递归 if原创 2022-03-18 13:51:41 · 337 阅读 · 0 评论 -
蓝桥杯 算法提高 一元三次方程求解
一、题目有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求三个实根。 输入格式 四个实数:a,b,c,d 输出格式 由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位 样例输入1 -5 -4 20样例输出2.00 2.00 5.00数据规模和约定|a|,|b|,|c|,|d|&原创 2022-03-17 21:36:08 · 1106 阅读 · 1 评论 -
初识STL
STL(Standard Template Library)是C++的标准模板库。STL包含6个部分。容器(container)迭代器(iterator)空间配置器(allocator)配接器(adapter)算法(algorithm)仿函数(functor)下面主要介绍常用容器和常用算法。目录一、容器1、顺序式容器1.1 vector1.2 stack1.3 list1.4 deque1.5 priority_queue2、关联式容器2.1 set2.2 multiset2.3 ma原创 2022-03-16 23:01:15 · 850 阅读 · 0 评论 -
C/C++ map函数统计每个字母出现的次数
//map函数统计每个字母出现的次数#include <stdio.h>#include <iostream>using namespace std;#include <string>#include <map>int main(){ map<char,int> ms; //关联性容器,键值对形式,创建一个map对象,key是字母,value是出现次数 map<char,int>::iterator p,mEnd原创 2022-03-16 22:58:30 · 2662 阅读 · 0 评论 -
蓝桥杯 算法提高 P0603 统计不同单词个数
一、题目编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如,对于句子“one little two little three little boys”,总共有5个不同的单词,one, little, two, three, boys。输入 one little two little three little boys输出 5二、思路将每个单词放入set中,利用set去重。三、代码#include <iostream>using namespace st原创 2022-03-16 21:40:46 · 631 阅读 · 0 评论 -
平面图判连通 蓝桥杯模拟赛题
目录一、题目二、分析三、代码四、总结一、题目著名设计师小蓝给蓝桥小学设计了一个教学楼。 蓝桥小学经常下雨,所以校长希望教学楼任何地方都可以连通到其它地方。 小蓝给出了教学楼的平面图,用一个 nn 行 mm 列的 0101 矩阵表示,其中 00 表示空地,11 表示教学 楼。两个相邻的 11 (上下相邻或左右相邻)之间互相可达。 请帮小蓝检查一下,是否教学楼的任意两个地方都可以连通到其它地方。输入描述输入的第一行包含两个整数 n, mn,m,用一个空格分隔。接下来 nn 行,每行一个长度原创 2022-01-20 21:46:31 · 559 阅读 · 0 评论 -
C语言遗传算法求f(x) = 1/(x1^2+x2^2+x3^2+x4^2),x在[-5,5]内最小值
遗传算法基本步骤:初始化、迭代(选择、交配、变异、评价)原创 2022-01-19 19:21:12 · 1808 阅读 · 1 评论 -
贪心 加油站问题
文章目录一、问题描述二、实验分析三、完整代码四、实验总结一、问题描述一个旅行家想驾驶汽车从城市A到城市B(设出发时油箱是空的)。给定两个城市之间的距离dis、汽车油箱的容量c、每升汽油能行驶的距离d、沿途油站数n、油站i离出发点的距离d[i]以及该站每升汽油的价格p[i],i=1,2,…,n。设d[1]=0<d[2]<…<d[n]。要花最少的油费从城市A到城市B,在每个加油站应加多少油,最少花费为多少?Input输入的第一行是一个正整数k,表示测试例个数。接下来几行是k个测试例的原创 2022-01-18 20:53:07 · 1765 阅读 · 0 评论 -
贪心 黑白点对问题
题目描述设平面上分布着n个白点和n个黑点,每个点用一对坐标(x, y)表示。一个黑点b=(xb,yb)支配一个白点w=(xw, yw)当且仅当xb>=xw和yb>=yw。若黑点b支配白点w,则黑点b和白点w可匹配(可形成一个匹配对)。在一个黑点最多只能与一个白点匹配,一个白点最多只能与一个黑点匹配的前提下,求n个白点和n个黑点的最大匹配对数。Input输入的第一行是一个正整数k,表示测试例个数。接下来几行是k个测试例的数据,每个测试例的数据由三行组成,其中第一行含1个正整数n(n<1原创 2022-01-17 23:03:48 · 1491 阅读 · 0 评论 -
回溯 邮票问题
目录一、问题描述二、思路分析三、完整代码四、实验截图五、实验总结一、问题描述设有n种不同面值a1, a2,…, an的邮票,规定每封信最多贴m张邮票。对于给定的m,n,求出最大的邮资连续区间。例如,给定n=3,m=3,邮票面值分别为2, 3, 5,则最大的邮资连续区间为[2,13]。二、思路分析本程序的思路是 回溯 = DFS + 剪枝,建立一棵n叉、深度为m的搜索树,剪枝条件是子节点小于父节点,就不往下搜索。剪枝关键代码如下:if (value[i] >= v && k原创 2022-01-17 22:42:05 · 519 阅读 · 0 评论 -
蓝桥杯 大整数乘法 试题 算法训练 P0805
题目当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过10位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过20位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726基本思路模拟竖式,两层循环,对于x的每位,都要乘以y。ps:在草稿纸上写写画画思路会更清晰。//大整数乘法:模拟竖式原创 2022-01-14 21:52:21 · 1020 阅读 · 3 评论 -
图书流通管理系统——软件开发项目实践
目录一、功能二、分析三、特殊库函数四、数据五、代码六、总结七、源码一、功能二、分析图书分类浏览具体分析见 分类目录管理系统图书检索借书还书查询借阅记录三、特殊库函数strcmp( ): 用于比较两个字符串是否相等,也可用来实现字典序排序和冒泡排序的比较操作strcpy( ):将一个字符串复制给另一个字符串swap( ):交换两个数组或结构体,可用来实现冒泡排序的交换操作strstr( ):字符串匹配,判断某个字符串是否被包含在另一个字符串四、数原创 2022-01-11 22:03:16 · 656 阅读 · 0 评论 -
分类目录管理系统——软件开发项目实践
目录一、功能二、分析三、代码四、运行截图五、总结六、源代码一、功能二、分析首先,该目录管理系统提供的源数据是一个二进制的.dat文件,可随机文件操作。如图,采用 fread 函数读出后,每一行有三列,分别代表分类号、分类名、双亲结点分类号。采用结构体数组存储文件内容。由于 “输出树形分类树” 功能,采用双亲表示法 实现 N叉树的顺序存储。增加分类:将新增记录写入文件尾部,同时更新数组;输出分类:打印数组即可;输出树形分类树:对N叉树进行先序遍历,输出的树有层次感,是利用树的层数实现的;原创 2022-01-10 20:10:28 · 1388 阅读 · 1 评论 -
C语言读者管理系统——软件项目开发实践
目录一、功能二、分析三、代码四、实验数据五、总结六、参考博客七、源代码一、功能浏览、增加、查询、修改、挂失二、分析核心是内存、文件的同步。这里内存是指数据存储方式,本项目以链表存储数据。也可以用数据结构时学习的链表,这里采用STL下的 list 库。首先从文件中利用 fscanf 读取信息存入链表;⛳️浏览:直接打印链表;????增加:采用尾插入链表,同时更新文件,利用 fprintf 写入数据到文件末尾;⛵️查询:利用 for(reader r:L) 遍历链表 (ps:由于结点是结构原创 2022-01-09 23:54:41 · 1218 阅读 · 0 评论 -
选择排序(递归)
递归实现选择排序算法基本思想每次找出最小元素,通过交换实现将其放在乱序的首位,直到所有元素都已经排好序。举例以 A[10] = { 3,1,6,4,8,2,10,7,9,5 } 为例第一次选择排序:排位置0,元素1是位置0以后的最小元素,那么swap(A[0], A[1]),即:1 3 6 4 8 2 10 7 9 5,那么位置0是排好序的,位置0以后是乱序。第二次选择排序:排位置1,元素1是位置1以后的最小元素,那么swap(A[1], A[5]),即:1 2 6 4 8 3 10 7 9原创 2021-12-30 23:30:37 · 3050 阅读 · 0 评论