牛客网刷题知识汇总3

typedef struct

{
char flag[3];
short value;
} sampleStruct;
union
{
char flag[3];
short value;
} sampleUnion;

假设 sizeof(char)=1,sizeof(short)=2,那么sizeof(sampleStruct) = 6 , sizeof(sampleUnion) = 4

结构体

字符型占用1字节,不需要字节对齐

short占用2字节,需要两字节对齐

所以sizeof(sampleStruct) = 3 *(1字节) + (1个补齐字节) + 1*(2字节) = 6

联合体

占用大小采用成员最大长度的对齐,最大长度是short的2字节

但 char flag[3]需要3个字节

所以 sizeof(sampleUnion) = 2*(2字节) = 4

对Union结构体,sizeof的取值不仅考虑sizeof最大的成员,还要考虑对齐字节,对齐字节的取值是取成员类型字节最大值与指定对齐字节(32位机器默认是4,64位机器默认是8)两者中的较小值,本题中成员类型最大值为short,2,与指定对齐字节4比较取2,所以要2字节对齐,如果去掉short变量,则取char的1字节对齐,结果为3

文章转载自 (www.slyar.com)

KMP 算法我们有写好的函数帮我们计算 Next 数组的值和 Nextval 数组的值,但是如果是考试,那就只能自己来手算这两个数组了,这里分享一下我的计算方法吧。

计算前缀 Next[i] 的值:

我们令 next[0] = -1 。从 next[1] 开始,每求一个字符的 next 值,就看它前面是否有一个最长的"字符串"和从第一个字符开始的"字符串"相等(需要注意的是,这2个"字符串"不能是同一个"字符串")。如果一个都没有,这个字符的 next 值就是0;如果有,就看它有多长,这个字符的 next 值就是它的长度。

计算修正后的 Nextval[i] 值:

我们令 nextval[0] = -1。从 nextval[1] 开始,如果某位(字符)与它 next 值指向的位(字符)相同,则该位的 nextval 值就是指向位的 nextval 值(nextval[i] = nextval[ next[i] ]);如果不同,则该位的 nextval 值就是它自己的 next 值(nextvalue[i] = next[i])。

举个例子:

计算前缀 Next[i] 的值:

next[0] = -1;定值。
next[1] = 0;s[1]前面没有重复子串。
next[2] = 0;s[2]前面没有重复子串。
next[3] = 0;s[3]前面没有重复子串。
next[4] = 1;s[4]前面有重复子串s[0] = ‘a‘和s[3] = ‘a‘。
next[5] = 2;s[5]前面有重复子串s[01] = ‘ab‘和s[34] = ‘ab‘。
next[6] = 3;s[6]前面有重复子串s[012] = ‘abc‘和s[345] = ‘abc‘。
next[7] = 4;s[7]前面有重复子串s[0123] = ‘abca‘和s[3456] = ‘abca‘。

计算修正后的 Nextval[i] 值:

nextval[0] = -1;定值。
nextval[1] = 0;s[1] != s[0],nextval[1] = next[1] = 0。
nextval[2] = 0;s[2] != s[0],nextval[2] = next[2] = 0。
nextval[3] = -1;s[3] == s[0],nextval[3] = nextval[0] = -1。
nextval[4] = 0;s[4] == s[1],nextval[4] = nextval[1] = 0。
nextval[5] = 0;s[5] == s[2],nextval[5] = nextval[2] = 0。
nextval[6] = -1;s[6] == s[3],nextval[6] = nextval[3] = -1。
nextval[7] = 4;s[7] != s[4],nextval[7] = next[7] = 4。

以下程序段完全正确的是(c)

A.int *p;  scanf("%d",&p);
B.int *p;  scanf(“%d”,p);
C.int k, *p=&k;  scanf("%d",p);D.int k, *p;  *p= &k;   scanf(“%d”,p);
B不对 scanf中&P是整型变量空间的地址,但P没有初值,P的值是不确定的 

构造函数和析构函数声明定义的时候,都是无类型的,不能添加 void.

tcpdump是简单可靠网络监控的实用工具

top 显示活动进程方面的情况

netstat显示网络有关的信息,比如套接口使用情况、路由、接口、协议(TCP等)等

ifconfig是查看活动的网卡信息

静止就绪:这个也叫做挂起就绪,是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。

活动就绪:进程在主存并且可被调度的状态。

静止睡眠(阻塞):是指进程对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态

活动睡眠(阻塞):是指进程已在主存,一旦等待的事件产生便进入活跃就绪状态。

正在执行的进程由于其时间片用完被暂停执行,此时进程应从执行状态变为活动就绪状态;

处于静止睡眠状态的进程,在进程等待的事件出现后,应变为静止就绪状态;

若进程正处于执行状态时,因终端的请求而暂停下来以便研究其运行情况,这时进程应转变为静止就绪状态;若进程已处于睡眠状态,则此时应转变为静止睡眠状态。

先序序列为a,b,c,d 的不同二叉树的个数是 () 。

根据二叉树前序遍历和中序遍历的递归算法中递归工作栈的状态变化得出:前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序。因为前序序列和中序序列可以唯一地确定一棵二叉树,所以题意相当于“以序列 a,b,c,d 为入栈次序,则出栈序列的个数为?”,对于 n 个不同元素进栈,出栈序列的个数为 =14 。(卡特兰数)

结构体内存对齐规则(请记住三条内存规则(在没有#pragam pack宏的情况下)

结构体所占用的内存与其成员在结构体中的声明顺序有关,其成员的内存对齐规则如下:

(1)每个成员分别按自己的对齐字节数和PPB(指定的对齐字节数,32位机默认为4)两个字节数最小的那个对齐,这样可以最小化长度。如在32bit的机器上,int的大小为4,因此int存储的位置都是4的整数倍的位置开始存储。

(2)复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,结构体数组的时候,可以最小化长度。

(3)结构体对齐后的长度必须是成员中最大的对齐参数(PPB)的整数倍,这样在处理数组时可以保证每一项都边界对齐。

(4)结构体作为数据成员的对齐规则:在一个struct中包含另一个struct,内部struct应该以它的最大数据成员大小的整数倍开始存储。如 struct A 中包含 struct B, struct B 中包含数据成员 char, int, double,则 struct B 应该以sizeof(double)=8的整数倍为起始地址。

				
时间: 2024-10-25 17:03:00

牛客网刷题知识汇总3的相关文章

牛客网刷题知识汇总2

构造函数不能声明为虚函数,析构函数可以声明为虚函数,且有时候必须声明为虚函数.构造函数和析构函数都不能调用虚函数. 先析构子类再析构父类,如果父类析构函数有虚函数,会导致调用子类的已经析构的内容. 先构造父亲类再构造子类,如果父类构造函数有虚函数,会导致调用子类还没构造的内容. A:构造函数不能声明为虚函数的原因是: 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的.而在构造一个对象时,由于对象还未构造成功.编译器无法知道对象 的实际类型,是该类本身,还是该

牛客网刷题笔记

1.程序出错在什么阶段__? int main(void) { http://www.taobao.com cout << "welcome to taobao" << endl; } 答案:http相当于一个label,双斜杠之后的www.csdn.net被当做注释了,这段代码是否可以编译通过呢?答案是可以.双斜杠之后的www.csdn.net被当做注释了,那么前面的http:是否合法?这就是C++中一个几乎不会被用到的语法,标签. 参照:http://blo

牛客网刷基础题错题集

1. HTML 语言中,表格有多少对 <TR> 标签就表示有多少列,这句话是否正确? 否,有多少对<tr>就表示有多少行 2.如果一个HTML文档内含有阿拉伯文,则应该? UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码.UTF-8用1到6个字节编码UNICODE字符.用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文) 3.根据栅格系统的标准用法,错误的是 c <di

牛客网算法题之All-in-All

题目: 有两个字符串s 和t,如果即从s 中删除一些字符,将剩余的字符连接起来,即可获得t.则称t是s 的子序列.请你开发一个程序,判断t是否是s的子序列. 输入描述: 输入包含多组数据,每组数据包含两个字符串s和t. 它们都由数字和字母组成,且长度小于100000. 输出描述: 对应每一组输入,如果t是s的子序列,则输出“Yes”:否则输出“No”. 输入例子: ABC ABCABC ABABC DE 输出例子: YesYesNo 代码: package niuke; import java.

牛客网真题练习-01

双核处理 一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务.n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间. 输入描述: 输入包括两行: 第一行为整数n(1 ≤ n ≤ 50) 第二行为n个整数length[i](1024 ≤ length[i] ≤ 4194304),表示每个任务的长度为length[i]kb,每个数

牛客网在线判题系统JavaScript(V8)使用

JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题. 大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行.但苦恼的是,我们不知道如何像C

牛客网华为机试训练第3题 明明的随机数

今天花了一下午才把明明的随机数这个搞明白,期间和牛客网的编译器殊死搏斗.一直发现在本地编译器运行成功,但是在牛客上的老师不能通过.整的十分的恼火和焦躁.后来看到了相同的问题,才发现解决之道. 时间限制:1秒 空间限制:32768K 热度指数:222608 本题知识点: 数组 算法知识视频讲解 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

好未来2017秋招笔试真题二 --牛客网

好未来2017秋招笔试真题二 --牛客网 链接:https://www.nowcoder.com/questionTerminal/ee5de2e7c45a46a090c1ced2fdc62355来源:牛客网 将一句话的单词进行倒置,标点不倒置.比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100 输出描述: 依次输出倒置之后的字符串,以空格分割 输入例子: I