每日一题 | day35(抄送列表 | 年会抽奖)
Posted WhiteShirtI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题 | day35(抄送列表 | 年会抽奖)相关的知识,希望对你有一定的参考价值。
选择题
1、主机甲和乙已建立了TCP连接,甲始终以MSS=1KB大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为8KB,则从t时刻起,不再发生超时的情况下,经过10个RTT后,甲的发送窗口是 ()
A 10KB
B 12KB
C 14KB
D 15KB
正确答案 A:
2、以太网的MAC 协议提供的是( )。
A 无连接不可靠服务
B 无连接可靠服务
C 有连接不可靠服务
D 有连接可靠服务
正确答案 A:
编程题
题目1:
题解思路:
1、先将第一行的数据按照名字进行分割出来
场景1:遇到的名字不存在双引号,则将该名字后的第一个逗号之前和名字的起始位置截取到数组中进行保存
场景2:遇到双引号,则肯定存在结束的双引号,此时可以找到第二个双引号,然后将双引号之间的字符串名字保存在数组中
2、检测第二行中的名字是否存在数组中,然后进行输出
代码:
// write your code here cpp
#include <iostream>
#include <string>
#include <algorithm>
#include <unordered_set>
using namespace std;
int main()
{
string nTable, name;
while (getline(cin, nTable) && getline(cin, name))
{
unordered_set<string> s;
int end = 0;
for (int i = 0; i < nTable.size(); ++i)
{
if (nTable[i] == '\\"')//存在引号
{
//找第二个双引号
//必须从i+1开始找,不然end还是i
end = nTable.find('\\"', i + 1);
string tmp = nTable.substr(i+1, end-i-1);
s.insert(tmp);
//更新到下一个名字的前一个位置
i = end + 1;
}
else
{
end = nTable.find(',', i+1);
if (end == string::npos)
{
//处理最后一个名字
s.insert(nTable.substr(i, nTable.size()));
break;
}
string tmp = nTable.substr(i, end - i);
s.insert(tmp);
i = end;
}
}
if (s.find(name) == s.end())
cout << "Important!" << endl;
else
cout << "Ignore" <<endl;
}
return 0;
}
题目2:
题解思路:错排问题
代码:
// write your code here cpp
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<long long> d = {0, 0, 1};
d.resize(21);
//所有可能
vector<long long> f = {1, 1, 2};
f.resize(21);
for (int i = 3; i <= 20; ++i)
{
d[i] = (i-1)*(d[i-1] + d[i-2]);
f[i] = f[i-1] * i;
}
int n;
while (cin >> n)
{
printf("%.2f%%\\n", 100.0 * d[n] / f[n]);
}
}
以上是关于每日一题 | day35(抄送列表 | 年会抽奖)的主要内容,如果未能解决你的问题,请参考以下文章
春季每日一题打卡day2 —— AcWing 435. 传球游戏
求怎么在公司年会上做抽奖活动,尽量让每个人都有机会抽奖的方法,谢谢