| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 22.2.4~2.5 -> 正文阅读 |
|
[数据结构与算法]22.2.4~2.5 |
1.储存一个数的二进制
注意jc数组储存的是倒序的n1的二进制,例如n1=8=1000(B),在jc数组中是0001; 2.所以想要知道一个数是2的几次方的范围,可以对它/=2,记录次数,次数减一即几次方;
num-1; 3.register 关键字; ①状态表示(下标含义):f[i,j]表示将a(1~i)操作到b(1~j)所需的最小操作次数; 因为属性是min,所以不想之前做的默认元素为0可以直接做,此题需要全部初始化为大数; ②状态转移方程:有3种操作,对应3种集合,将3种操作的状态转移方程理解写出即可; 删除操作:删除第i个元素(末尾元素)即保证前1~(i-1)是和b匹配的,加上本次的操作次数1, 所以f[i,j]=f[i-1,j]+1; 插入操作:插入后a1~(i+1)与b1~j相等,即a1~i与b1~(j-1)相等,所以此时的状态由f[i,j-1]转移而来;即f[i,j]=f[i,j-1]+1; 替换操作:将ai替换为bj,所以a1~i-1与b1~j-1相等,所以状态由f[i-1,j-1]转移而来; f[i,j]=f[i-1,j-1]+1;特别的,当ai==bj时,不用操作,即f[i,j]=f[i-1,j-1]+0; 预处理就是考虑遍历时数组用到的边界问题和初始情况; a=0时只能插入,b=0时同理,只能删除;
5.一个简单的输入知识 ?按照4.的做法,我无法初始1000个char类型,那么该如何输入此题呢? ①可以用结构体;结构体里面一个char,用结构体的数组下标,也行;但是在结构体输入中,scanf("%s",&z[i].a+1);无法完成从下标1开始的输入,需要在后边额外操作,也有不便; ②可以char一个二维数组,s[15][1005],这样输入的s[i]不是单个字符元素,而是每一行的字符串;可以把i看作行号了就; 偶然间对memset初始化char数组,会不会影响其长度产生影响 ?看得出来填充0字节时没有影响的,直接理解为空字节就好,真正要表示0,需要填充'0',带单引号的0,这样就是填进去0了; 并且char的定义里也有解释: ?即0; 6.编辑距离; 主要是输入问题的方面,以段错误,一般数组还是开1e3起步比较好,就算小了;
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:26:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |