C++
什么是算法
(这个基本都学过)
算法通常是由一段有输入有输出的代码描述的,该代码的输入输出就是一个具体问题的条件和答案。
算法的表示形式
-
1、流程图 2、自然语言 3、伪代码 4、编程语言
算法的特性:有穷性,确定性,可行性,输入,输出
错题记录:
1、算法是解决一类问题的计算步骤。计算机的发明,不是为了解决一个问题,而是为了解决一类问题。(一类问题!)
什么是数据结构
数据结构研究的是
1、抽象层面上的一组有特定关系的数据的存储预处理 2、数据的逻辑结构和数据的物理结构以及它们之间的相互关系 3、数据结构是解决问题的过程中使用的容器
常见的数据结构:
常见的数据结构有数组、链表、栈、队列、树、图等
数据结构常见的操作:
常见操作:创建、清除、插入、删除、检索、更新、访问、遍历等
模拟与高精度
模拟算法
-
将刚才要手动执行的实验流程“模拟一遍” 如脚本文件,调用脚本完成实验流程
-
扫雷小游戏: #include <bits/stdc++.h> using namespace std; string s; int a[110][110]; int mx[8] = {-1, -1, -1, 0, 0, 1, 1, 1}; //八个相邻方向x坐标的变化 int my[8] = {-1, 0, 1, -1, 1, -1, 0, 1}; //八个相邻方向y坐标的变化 //方块上出现数字,则表示其周围八个方块中共有多少颗地雷 int calc(int i,int j){ int ans = 0; for(int k = 0; k < 8; k++){//周围八个方块中地雷的个数 if(a[i + mx[k]][j + my[k]] == 1) //每次计算一个格周围八个的个数 ans++; } return ans; } int main() { // 请补全代码,实现题目功能 int n, m; //矩阵行列 while(true){ cin >> n >> m; if(n == 0 && m == 0){ break; } memset(a, 0, sizeof(a)); //数组清零 for(int i = 1; i <= n; i++){ cin >> s; for(int j = 0; j <= m; j++){ if(s[j] == '*') a[i][j+1] = 1;//如果该位置是地雷 对应数组位置为1 } } for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ if(a[i][j] == 1){ cout << "*"; //是地雷就输出地雷 }else{ cout << calc (i , j); //不是地雷就输出周围有结果地雷 } } cout << endl; } cout << endl; } return 0; }
高精度
-
单精度:能用一个内置类型存储的整数。 高精度:不能用内置类型存储的大整数,通常用数组存储每一个数位。
-
使用高精度大整数的第一步 存储 大端序,小端序(类似于计组) 通常采用小端序(135 ==> 存储是 531)存储 方便模拟竖式计算,因为我们习惯于从低位到高位,小端序地位存储在下标靠前的地方
-
高精度 加法,减法运算
算法评价与复杂度
算法“评价员”
-
评价算法的维度:时间和空间 为什么要评价算法:
-
(1)计算资源有限,包括CPU的计算速度和内存
-
(2)我们的等待时间是有限的
算法的评价指标
-
时间复杂度 空间复杂度:算法执行过程中所需要的存储空间。