【C++】刷题日记(day15)

简介: 刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!

mmexport1669275087264.jpg

借问酒家何处有,牧童遥指杏花村。

一、选择题

1、在TCP/IP体系结构中,直接为ICMP提供服务的协议是

A.PPP

B.IP

C.UDP

D. TCP

答案:B。分析:

image.png

2、在TCP/IP五层模型中,网络层提供的是

A.有连接可靠的虚电路服务

B.无连接不可靠的虚电路服务

C.无连接不可靠的数据报服务

D.无连接可靠的数据报服务

答案:C。分析:有连接和无连接的区分是看该协议是否使用连接,即只需要看其首部是否建立了连接的字段;若分组首部含有序号以及校验数据部分的校验和字段,则是可靠的,否则不可靠。在TCP/IP五层模型中,网络层采用的是IP,IP数据首部没有类似于SYN、FIN等建立连接的字段,因此是无连接的;IP分组中没有序号以及校验数据部分的校验和字段,因此是不可靠的;IP分组中头部含有源IP和目的IP地址,因此不是一个虚电路号,故网络层采用的数据报服务。综上,网络层提供的是无连接不可靠的数据报服务,选C


3、下列关于IP路由器功能的描述中,正确的是()。

I.运行路由协议,设置路由表

Ⅱ,监测到拥塞时,合理丢弃IP分组

Ⅲ,对收到的IP分组头进行差错校验,确保传输的IP分组不丢失

IV,根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上

A.仅III、IV

B.仅1、Ⅱ、Ⅲ

C.仅1、II、V

D.I、Ⅱ、Ⅲ、IV

答案:D。分析:I 和IV显然是IP路由器的功能。对于Ⅱ,当路由器监测到拥塞时,可合理丢弃IP分组,并向发出该IP分组的源主机发送一个源点抑制的ICMP报文。对于Ⅲ,路由器对收到的IP分组首部进行差错检验,丢弃有差错首部的报文,但不保证IP分组不丢失。


4、主机甲和主机乙之间建立一个TCP连接,TCP最大段长度为1000字节,若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连续发送 两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的 接收 窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是()

A.1000

B.2000

C.3000

D.4000

答案:A。分析。第一 个 段的确认段中通告的 接收 窗口大小为2000字节,即表明在接受到第一个报文段后,还有2000字节的缓存空间可用。由于发送方发送了二个报文段,第二个段将占用剩下的2000字节中的1000字节,即一共还有(2000-1000=1000)字节,因而此时主机甲还可以向主机乙发送的最大字节数是1000字节 。


5、某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络的最大子网个数、每个子网内的最大可分配地址个数

()

A、8,32

B、32.6

C、8,30

D、32,8

答案:B。分析:248是11111 000

前面5个1划分32个子网

3个0划分8个主机 去掉000和111 就是6个

二、编程题

1、字符串计数

image.png

代码示例:

#include<iostream>#include<string>#include<cmath>#include<vector>#include<algorithm>usingnamespacestd;
strings1, s2;
intlen1, len2;
intmain()
{
while (cin>>s1>>s2>>len1>>len2)
    {
intcnt=0;
s1.append(len2-s1.size(), 'a');
s2.append(len2-s2.size(), (char)('z'+1));
vector<int>a;
for (inti=0; i<len2; i++)
        {
a.push_back(s2[i] -s1[i]);
        }
for (inti=len1; i<=len2; i++)
for (intk=0; k<i; k++)
            {
cnt+=a[k] *pow(26, i-1-k);
            }
cout<<cnt-1<<endl;
    }
return0;
}

2、最长公共子序列

image.png

image.png

算法分析:DP。

代码示例:

#include<iostream>#include<algorithm>#include<string.h>usingnamespacestd;
constintN=1025;
intf[N][N];
intmain()
{
stringa, b;
while (cin>>a>>b)
    {
intn, m;
n=a.size(), m=b.size();
for (inti=1; i<=n; i++)
for (intj=1; j<=m; j++)
            {
f[i][j] =max(f[i][j-1], f[i-1][j]);
if (a[i-1] ==b[j-1]) f[i][j] =max(f[i][j], f[i-1][j-1] +1);
            }
cout<<f[n][m] <<endl;
memset(f, 0, sizeoff);
    }
return0;
}


总结

本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!

相关文章
|
1月前
|
容器
《剑指offer》——刷题日记
《剑指offer》——刷题日记
|
8月前
|
C语言
|
9月前
|
Cloud Native
【刷题日记】1037. 有效的回旋镖
本次刷题日记的第 58 篇,力扣题为:1037. 有效的回旋镖,简单
【刷题日记】1037. 有效的回旋镖
|
10月前
LeetCod刷题笔记
LeetCod刷题笔记
做题日记1
最小值一定在序列A这里面如果A序列为升序则A序列的第一个就是最小值,所以每次二分取得中间值与最右边的值进行比较然后就能找到最小值了。
55 0
|
存储 数据安全/隐私保护 C++
【C++】刷题日记(day5)
刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题有关链表的选择题,以及两道牛客编程题,希望大家读后能够有所收获!
【C++】刷题日记(day5)
|
算法 Linux 调度
【C++】刷题日记(day10)
刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!
【C++】刷题日记(day10)
|
算法 C++ 数据库管理
【C++】刷题日记(day6)
简介: 刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!
【C++】刷题日记(day6)
|
算法 网络协议 网络性能优化
【C++】刷题日记(day12)
刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!
 【C++】刷题日记(day12)
|
算法 调度 C++
【C++】刷题日记(day11)
刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!
【C++】刷题日记(day11)