0
点赞
收藏
分享

微信扫一扫

2022-04 Task01 交大ACM C++算法(1)

天使魔鬼 2022-04-15 阅读 75
c++

 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)我们的等待时间是有限的

算法的评价指标

  • 时间复杂度 空间复杂度:算法执行过程中所需要的存储空间。

举报

相关推荐

0 条评论