- 博客(21)
- 收藏
- 关注
原创 算法设计与分析——贪婪算法
前面提到,贪婪算法是很抽象的,并且很多时候,贪婪算法是试出来的,如果你在做题的时候,手动模拟一下感觉可以从局部最优推出整体最优,并且没有得出明显的范例,那么可以尝试使用贪婪算法。贪婪算法的本质是选择每一阶段的局部最优,从而达到全局最优。到底什么是贪婪算法,笔者在这里举个例子:一堆钞票,小明每次只能拿一张,一共可以拿走十张,要怎么拿才能拿走最多的钱?当然,不求甚解,对于想要深入学习算法的读者来说是不太好的。实际上,这四步太过理论化,只需要弄清楚局部最优是什么,全局最优是什么就行了。确定合适的贪婪策略。
2024-11-01 14:50:33 118
原创 C++初阶——类与对象(上篇)
与C语言中存在的结构体不同,在类中,不仅可以定义变量,还可以定义函数。在C++中,使用class作为定义一个类的关键字。class body;//由成员变量和成员函数组成。class作为定义类的关键字,className为类的名字,{}中为类的主体,注意类定义结束后存在一个不可省略的分号。类体中的内容称为类的成员,类中的变量称为类的属性或者成员变量;类中函数被称为类的方法或者成员函数。成员函数的声明和定义全部放在类体中,需要注意的是,这种写法会导致编译器将成员函数当作内联函数处理。
2024-10-30 20:24:17 1698
原创 C++初阶教程——C++入门
其中,namespace_name是可自定义的命名空间名,declarations是声明的变量、函数和类的实体。//正常的namespace定义int val;//命名空间的嵌套int val;int k = 1;同一个工程中,允许存在多个同名的命名空间,编译器最后会将它他们合并成一个命名空间。函数重载是C++中一个重要的特性,它允许在相同的作用域内定义多个同名函数,只要这些函数的参数列表不同即可。参数列表不同可以是参数的类型不同、参数的数量不同,或者两者都不同。
2024-10-28 22:42:08 622
原创 C语言进阶——文件操作
在程序设计中,一般谈的文件有两种:程序文件、数据文件。之前的博客处理的数据的输入输出都是以终端为对象的,从终端的键盘输入数据,运行结构显示到显示器上。实际上,有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用。
2024-10-27 10:17:59 797
原创 C语言进阶——动态内存分配
有时候,程序所需要的内存只有在程序运行时才能知道,那数组的编译时开辟空间的方法就不能满足了,这时只能采用动态内存开辟了。
2024-10-26 18:19:57 863
原创 C语言进阶——自定义类型
int sex;}s1,s2;//直接定义两个结构体变量,是全局变量int main()//使用关键字定义两个结构体变量,是局部变量return 0;int sex;//使用.成员变量可以调整初始化的顺序int main()return 0;int sex;int sex;
2024-10-26 11:10:57 975
原创 C语言进阶——指针进阶
在指针的类型中,有一种指针类型为字符指针char*。那么下面的问题会有什么结果呢?C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串时,他们实际上会指向同一块内存。但是,当你声明两个字符数组并初始化为相同的字符串时,这两个数组实际上是两个独立的字符串副本。即使它们的内容相同,它们在内存中的位置也是不同的。
2024-10-24 12:43:16 1700
原创 算法设计与分析——动态规划
动态规划建立在最优原则的基础上,在每一步决策上列出可能的局部解,按某些条件舍弃不能得到最优解的局部解,通过逐层筛选减少计算量。每一步都经过筛选,以每一步的最优性来保证全局的最优性。具体来说,动态规划算法仍然是将待求解的问题的若干子问题,采用列表技术,将从小到大的子问题的计算答案存储于一张表中,由于将原问题分解后的各个子问题可能存在重复,所以当重复遇到该子问题时,只需要查表继续问题的求解,而不需要重复计算。所以是记录子问题并不断填表。
2024-10-21 20:40:06 949
原创 C语言进阶——数据的存储
数据是编程的基础,无论是简单的数值运算还是复杂的数据库操作,编程都涉及到对数据的处理。作为程序员,了解数据是如何存储、检索、转换和展示是相当有必要的。这篇博客将为大家讲解数据是怎样在计算机系统中存储的。
2024-10-15 11:20:47 831
原创 算法设计与分析——递归与分治策略
递归是计算机科学中的一个重要概念,它是指函数、过程、子程序在运行过程中直接或者间接调用自身而产生的重入现象。递归算法描述简捷,结构清晰。但是递归算法的执行效率低,空间消耗多,有时候还会受到一些软硬件环境条件限制,因此,在某些时候,还需要将递归算法转换为非递归算法。
2024-10-14 11:50:22 706
原创 C语言初阶之结构体
结构体的定义通常包括关键字struct,后跟结构体名称和一对花括号{}包围的一系列成员变量。每个成员变量都有自己的数据类型。// 名字int age;// 年龄// 身高结构体的成员可以变量、数组、指针,甚至是其它结构体。有了结构体,那么如何定义变量,其实很简单。int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;
2024-10-06 12:03:56 285
原创 C语言初阶之指针
在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。可以这样理解内存:指针是个变量,存放的是内存单元的地址(编号)。也就是说指针就是变量,用来存放地址的变量(存放在指针中的值都被当做地址处理)。
2024-10-06 11:24:19 938
原创 C语言初阶之操作符
在C语言中,算术操作符是用来执行基本数学运算的符号,包括加法、减法、乘法、除法以及取模(求余数)等。这种操作符有两个操作数,位于操作符两端的数字就是操作数,这种操作符也叫双目操作符。运行结果为:在计算机中执行算数运算一个不可避免的话题是操作精度问题,如果将一个浮点数和整数进行运算,结果将会是一个浮点数。浮点数可以表示小数部分而整数不可以,因此直接将一个浮点数的结果存储到整型变量中是不可行,这会导致数据丢失——浮点数的小数部分会直接被截断。
2024-10-05 21:48:56 1335
原创 C语言初阶之数组
在 C 语言中,一维数组是一组相同类型的数据元素的集合,这些数据元素按照一定的顺序排列,并且可以通过一个索引来唯一标识每一个元素。数组中的每个元素都可以通过数组名加上一个方括号内的索引来访问。一维数组通常用于存储一系列相关的数据项,如一组数值、字符序列(字符串)等。这里将这部分知识点拆分为一维数组创建初始化、一维数组的使用、一维数组在内存中的应用三个部分进行讲解。1.1一位数组的创建与初始化数组是一组相同类型元素的集合。数组的初始化是指在创建数组的同时给数组的内容一些合理的初始值。
2024-10-04 20:19:21 674
原创 C语言初阶之函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。statement;//语句项ret_type 返回类型fun_name 函数名para1 函数参数举个例子,写一个函数找出两个整数中的最大值。int get_max(int a, int b)//在函数名之前的是函数类型,括号内是传入的两个形式参数//也可以写成这种三目操作符的形式return (a > b)?a : b;int main()
2024-10-03 17:16:23 1320
原创 C语言初阶之分支与循环
在C语言中,“语句”指的是构成程序的基本单位之一,它告诉计算机要执行的操作。语句可以是一条简单的命令,如变量赋值;也可以是一个复杂的操作,如条件判断、循环等。每个语句通常以分号(;)结束,表示一个完整的指令。
2024-10-02 16:53:29 1363
原创 C语言初阶之初识C语言
C语言是一种广泛使用的高级编程语言,它最初由Dennis Ritchie于1972年左右在贝尔实验室开发。C语言的设计目标是为了提供一种可以方便地进行系统编程的语言,并且能够高效地运行在多种不同的计算机硬件上。C语言是很多现代编程语言的基础,C++就是由其发展而来。此外,许多操作系统的核心部分,包括Unix操作系统和Linux操作系统,都是用C语言编写的。//define定义标识符常量//define定义宏int main()return 0;
2024-10-02 00:22:11 833
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人