- 博客(153)
- 资源 (1)
- 收藏
- 关注
原创 关于C语言函数之间的数据交换
C语言的函数可以分为主调函数和被调函数两大类,他们共同完成程序的功能。现在把主调函数当成一个人,被调函数是一个具有某个功能的工厂。那么人怎样协调工厂一起把原料加工成产品呢。有三种模式:一、普通的参数传递(图片来自百度,向图片作者致谢)此时,我们的甘蔗棍就是原材料,榨汁机就是工厂,工厂加工后,产品就是果汁。对应到函数,榨汁机就是函数,留的那个放甘蔗的地方就是形式参数,甘蔗是实际参数,液体是水龙头提供产品的形态,是返回值类型,杯子里的甘蔗汁是返回值。当你不用甘蔗机的时候,
2022-01-09 11:47:54
829
原创 素数判断中一个典型错误
在学习C语言过程中,素数判断也是一个经典题目,大约每年都有40%的学生学不会。究其原因,是逻辑没有理顺的原因。下面是一个典型错误,看看你是否犯过。输入一个整数x,判断其是否是素数,若是输出Yes,否则输出No。某学生写成下面的样子。# include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL x,i; cin>>x; for(i=2;i<
2021-12-28 09:43:40
788
原创 帮你理解 sum=1阶乘+2阶乘+3阶乘+...+n阶乘 的简单高效算法---多添加打印语句
在学习循环时,计算 sum=!+2!+3!+...+n!,是一个经典的题目。除了双重循环这个逻辑简单、效率低的算法外,老师往往还会介绍一个高效的算法,如下:# include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL n,item=1,sum=0,i; cin>>n; for(i=1;i<=n;i++) { item=item*i; sum=su
2021-12-28 09:28:55
1054
原创 初学编程者要学会发现问题---多加打印语句
一些学生,对编程很感兴趣,也会去做题,但当程序运行结果不正确时,往往不会去发现问题。这里给大家演示一个方法,可以帮助你看清楚程序的运行过程,从而自己发现问题,进而解决问题。 只有自己发现问题、解决问题,得到的成就感和幸福感才是实实在在的。 比如:输入一个整数n,计算 sum=1!+2!+3!+....+n!,输出 sum。 某个同学写出下面的程序:# include <bits/stdc++.h>using names...
2021-12-28 09:16:35
400
原创 有些实数在计算机内存储是不精确的,如何验证?
我们列出0-10,这11个数的开平方b,b*b,比较一下结果。并且我们保留到小数点后10位和20位。#include<bits/stdc++.h>using namespace std;int main(){ for(int i=0;i<11;i++) { double b; b=sqrt(i); //cout<<b<<" "<<b*b<<" "<<i...
2021-12-15 21:21:55
1120
原创 求组合数cnm
传统算法cnm=n!/m!/(n-m)!,当n比较大时,会溢出下面的方法可以避免LL cnm(LL n,LL m){ LL f=1; LL i,j=1; for(i=n-m+1;i<=n;i++) { f=f*i; if(f%j==0) { f=f/j; j++; } }...
2021-10-16 10:37:06
2829
原创 c++11以前中的hash_map
自己杜撰一个题目:对于一组数据,存在数组中a,现在输入多行,每行两个整数m,n要求输出每个a【m,n】中最大值。每次输入一对m,n就在hash_map中查找是否存在,若存在,则直接输出,若不错在则去a中查找,查找过程中产生的中间结果都加以记录。这样后面若遇到查过的,则不用再查了。————————————————#include <ext/hash_map> #include<bits/stdc++.h>using namespace std;//usi..
2021-10-09 20:09:55
282
原创 C++11中的unordered_map,底层基于hash table实现
在C++11中,有了基于哈希表的unordered_map和unordered_set,可以直接使用。但是,c、c++程序竞赛似乎不支持c++11.万能头文件#include<bits/stdc++.h>using namespace std;怎样使得dev-cpp支持c++ 11呢?(96条消息) 让devcpp支持c++11_速趴赛亚金的博客-优快云博客1.选择菜单栏的--工具,打开编译选项。2.在编译项中勾选“编译时加入以下命令”,并加入命令 -std=c+.
2021-10-09 17:13:19
566
原创 C++关于字符串的读入操作
C++11中不允许使用gets()得到一行字符。若使用字符数组,C++ string的优秀功能不能使用。现找到使用getline的方法可以用C++11得到一行字符。特记之。一、string1、读入不能包含空白符的字符串string s;cin>>s;读入字符串,遇到空白符、回车符等结束。2、读入一行,以回车符结束string s; getline(cin,s);//s中不包含回车符 cout<<s;3、先读入一个整数n,再读...
2021-10-04 20:44:49
3817
原创 C++-重载运算符以利用sort函数对复杂类型(结构体类型)排序
在使用c++的sort函数时,其函数原型为:①两个参数的形式template <class RandomAccessIterator>void sort ( RandomAccessIterator first, RandomAccessIterator last );②三个参数的形式template <class RandomAccessIterator, class Compare> void sort ( RandomAccessIterator f..
2021-09-16 08:50:45
1117
转载 【转】C++ 万能头文件
#include<bits/stdc++.h>//包含了目前c++所包含的所有头文件!!!!using namespace std;int main(){ return 0;}
2021-09-16 08:39:35
1896
原创 C++的find_if函数
find_if函数可以查询复杂数据类型,比如结构体。///ttt.cpp//c++编译器下通过#include<stdio.h>#include<stdlib.h>#include<vector>#include<algorithm>#include<iostream>using namespace std;struct node{ int data; int count;};node x...
2021-09-13 20:56:35
2922
原创 C++中利用vector构建结构体类型的堆
怎样从vector中构建大顶堆或者小顶堆,网上多见以int型为例。但现实中复杂数据比较多,多用结构体表示。本文演示如何从结构体类型的vector构建堆。///ttt.cpp//c++编译器下通过#include<stdio.h>#include<stdlib.h>#include<vector>#include<algorithm>#include<iostream>using namespace std;st...
2021-09-13 17:00:49
614
原创 C语言中的跳转语句goto和return
•顺序结构中的语句顺次执行•一条都不能少我们能不能从某个地方跳转到另外一个地方执行呢?可以!用goto语句和return语句。goto语句在较复杂程序中,不提倡使用,但不影响我们了解。一、goto语句1、向下跳。选择结构的前生往世。#include<stdio.h>int main(){ double a,b,c; a=b=0; a=4; goto L; b=12;L: c=a+b; printf("%lf\n",c); ...
2021-03-27 11:29:15
2707
原创 C#开发Android App--05--获取加速度传感器数据并显示在textView控件上面
创建一个新C#android项目选择“BlankApp”在生成的界面上,删除原来的layout,从工具箱重新选择一个LinearLayout再选择三个textView,id为默认,即textView1、textView2、textView3,用以显示加速度传感器x、y、z轴数据再选择两个个Button,id为默认,即button1、button2可以适当调整他们的大小运行,效果为:其对应的activity_main.xml为:<?xml version="1...
2020-12-24 08:55:13
2201
5
原创 C#开发Android App--01--准备工具
微软的官方文档部分:https://docs.microsoft.com/zh-cn/xamarin/get-started/installation/windows摘录和加工如下:Visual Studio 中都免费附带 Xamarin,并且不需要单独的许可证,可使用 Visual Studio 安装程序下载和安装 Xamarin.Android 工具。Xamarin 可安装为新 Visual Studio 2019 安装的一部分,具体通过以下步骤操作: 从Visual Studi.
2020-12-20 09:48:56
999
1
原创 C#-学习软件开发最好的入门工具
优点如下:1、C#的开发工具VisualStudio是地表最强大的开发工具;对入门者友好。2、C#可以开发控制台、桌面、web、app等软件3、一门语言可以体验所有,选你最爱深入钻研。
2020-12-20 09:47:41
1942
1
原创 Linux下C语言验证多线程-分段排序
https://blog.youkuaiyun.com/skrskr66/article/details/90298470https://blog.youkuaiyun.com/luguifang2011/article/details/41476643编写程序必须配置编译器点击Compiler再设置然后保存
2020-12-14 20:37:55
411
原创 Linux下C语言验证多进程
#include<sys/types.h>#include<unistd.h>#include<stdio.h>#include<iostream>using namespace std;int main(){ pid_t pid1; pid_t pid2; cout<<"main: pid1="<<pid1<<"; pid2="<<pid2<<endl;...
2020-12-13 12:43:29
182
原创 Linux系统下 简单C/C++程序的开发
https://blog.youkuaiyun.com/shine_journey/article/details/78731390
2020-12-13 11:24:55
1254
原创 Hdu2062--01背包-动态规划法-递归-记忆化搜索
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2602从前到后推导参考:https://blog.youkuaiyun.com/tobe_numberone/article/details/89430223#include<string.h>#include <iostream>#include <algorithm>using namespace std;//http://acm.hdu.edu.cn/show.
2020-12-01 16:32:48
172
原创 Hdu2062--01背包-动态规划法
方法1:#include <stdio.h>#include <string.h>int dp[1001][1001];int max(int x,int y){ return (x>y?x:y);}int main(void){ int t,n,v,i,j; int val[1001],vol[1001]; scanf("%d",&t); while(t--) { scanf("%d
2020-12-01 16:22:08
204
原创 回溯法解决01背包-非递归算法-效率低
http://acm.zua.edu.cn/problem.php?cid=1025&pid=24解题思路:物体的个数为Num,背包的体积限制为Volum物品的体积是v[1]、v[2]、...、v[Num]物品的价值是w[1]、w[2]、...w[3]找出一个物品的组合,使得在不超过体积Volum的条件下,价值最大。用回溯法设置一个栈,解空间是一维数组。从初始空间开始,放入栈1、当栈不空时,取出栈顶元素,2、根据是否选取下一个物品,生成两个新的结点,放入栈顶.
2020-12-01 16:20:06
579
原创 回溯法解决01背包问题--效率低-适用于小规模数据问题
http://acm.zua.edu.cn/problem.php?cid=1025&pid=24解题思路:物体的个数为Num,背包的体积限制为Volum物品的体积是v[1]、v[2]、...、v[Num]物品的价值是w[1]、w[2]、...w[3]找出一个物品的组合,使得在不超过体积Volum的条件下,价值最大。用回溯法Num个物品分别编号1、2、...、Num对每个物品都有取或者不取两种情况。int Max;//最大价值int Volum;//背包容量.
2020-12-01 16:14:18
393
原创 利用next_permutation求解01背包问题--效率低,适用小数据量问题
http://acm.zua.edu.cn/problem.php?cid=1025&pid=24下面代码能解决上面问题,是由于后台测试数据量少。还是掌握动态规划为好#include<stdio.h>#include<algorithm> #include<iostream> using namespace std; #include "string.h"#include "stdio.h" int n,w;struct nod.
2020-12-01 16:06:08
152
原创 图--关键路径算法
#include"string.h" #include<vector>#include<iostream>#include<stack>using namespace std;#define max_vertex_num 20struct ArcNode//弧(边)结点{int adjvex;//该弧所指向的顶点的位置int weight;//权重ArcNode *nextarc;//指向下一条弧的指针};struct VexNode//表头结..
2020-11-24 21:35:13
371
原创 图-拓扑排序算法
#include<iostream>#include<stack>using namespace std;#define max_vertex_num 20struct ArcNode//弧(边)结点{int adjvex;//该弧所指向的顶点的位置ArcNode *nextarc;//指向下一条弧的指针};struct VexNode//表头结点,或者说弧头结点{ char vex[50];// ArcNode *firstarc;//第一条弧指针};..
2020-11-24 21:34:01
232
原创 图的最短路径算法-Floyd算法
#include"string.h"#include<iostream>#include<vector>using namespace std;#define max_vertex_num 20//顶点最大个数,假定不超过20个。//采用邻接矩阵作为图的存储结构int vex_num;//顶点的实际个数char v[max_vertex_num][20];//存储顶点的数组,假设顶点名字不超过20字符int arcs[max_vertex_num][max_ve.
2020-11-24 21:32:47
190
原创 图的最短路径算法-Dijkstra算法
// Dijkstra_C.cpp : Defines the entry point for the console application.//#include<string.h> #include<iostream>#include<vector>using namespace std;#define max_vertex_num 20//顶点最大个数,假定不超过20个。//采用邻接矩阵作为图的存储结构int vex_num;//顶点的实际个.
2020-11-24 21:31:22
226
原创 图的最小生成树算法-Kruscal算法-并查集-然而未采用堆排序技巧-效率依然低
#include <iostream>using namespace std;#define max_vertex_num 20int vex_num;//顶点个数char v[max_vertex_num];//存储顶点int arcs[max_vertex_num][max_vertex_num];//存储权值void Initialization();//图的初始化int LocateVex(char u);//定位顶点u,返回顶点在一维数组v中的下标void I..
2020-11-24 21:30:04
117
原创 图的最小生成树算法-Kruscal算法-笨方法
知识点:1、图的邻接矩阵表示法;2、Kruscal算法,不采用并查集。采用一维数组,合并集合时,把一个集合中的标签全部改成另一个集合的标签,顺序扫描,效率低。// MiniSpanTree_Kruskal.cpp//基于邻接矩阵的Kruscal算法//逐条边的加入,笨办法 #include <iostream>using namespace std;#define max_vertex_num 20int vex_num;//顶点个数char v[max_ve.
2020-11-24 21:27:50
341
原创 图的最小生成树算法-Prim算法
知识点:1、图的邻接矩阵表示法;2、Prim算法实现// MiniCostSpanTree_Prim.cpp //基于图的邻接矩阵表示法//图的最小生成树Prim算法//逐个顶点的找出最小生成树 #include <iostream>using namespace std;#define max_vertex_num 20int vex_num;//顶点个数char v[max_vertex_num];//存储顶点int arcs[max_vertex_nu.
2020-11-24 21:24:18
328
原创 图的邻接表表示法及深度优先、广度优先遍历算法
知识点:1、图的邻接表表示法;2、图的深度优先算法;3、图的广度优先算法。//图的邻接表表示法//基于邻接表表示法的图的遍历 #include "string.h" #include<stdlib.h>#include<queue> #include<iostream>using namespace std;typedef struct ArcNode{ int adjvex;//邻接点 double weight;//边的信息 A
2020-11-24 21:22:01
1074
原创 图的邻接矩阵表示法及深度优先、广度优先遍历算法
知识点:1、图的邻接矩阵表示法;2、图的深度优先遍历算法;3、图的广度优先遍历算法。//图的邻接矩阵表示法//基于邻接矩阵表示法的图的遍历 #include "string.h" #include<stdlib.h>#include<queue> #include<iostream>using namespace std;struct MGraph{ char* vexs[100];//存储顶点信息,0下标处不存储数据 doub.
2020-11-24 21:20:13
1594
原创 win10下截屏快捷键
windows键+shift键+S键,在win10下就可以调用截图程序,拖动鼠标选中要截的图,就到了剪切板上了,ctrl+v粘贴到word等媒体中就行了。
2020-11-17 18:51:22
466
2
原创 对一棵二叉树进行哈夫曼编码--递归法--回溯法
完全实现构造哈夫曼树、进行哈夫曼编码是一个浩大的工程。对于初学者,可能好久都不能把哈夫曼树构造出来。下面我们手工构造一棵基于二叉链表的树,且假定其就是哈夫曼树。然后,我们采用自上而下递归的方法对其进行编码。直接上代码啦。#include <string>#include <iostream>using namespace std;struct node{//树的结点结构。二叉链表表示法 char data; node *lchild,*rchild;
2020-11-17 18:34:15
1006
原创 cin输入字符时的一个坑---默认会跳过空格
我们知道,在C++中定义一个字符变量并进行输入输出的代码如下:char a;cin>>a;cout<<a;那么,读下面的程序:#include<bits/stdc++.h>using namespace std;int main(){ char a,b,c,d; cin>>a; cin>>b; cin>>c; cin>>d; cout<<a<
2020-11-17 15:15:23
1867
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人