缺失的数据
欢迎进入我的C语言世界
题目
Problem Description
网络传输中由于受到链路层的最大传输单元(Maximum Transmission Unit,MTU)的限制,在很多情况下需要对原始的数据报进行分片,使得每一分片可以顺利的传输。F公司的网络设备根据MTU的限制将每个原始的数据划分成n片,用1~n这n个数字对每个分片进行编号,在目的主机上将这些分片重新组合成原始的数据。可是在测试中发现一个问题:经常出现缺失一个数据分片的情况。公司希望在将分片重新组合前就能知道缺失的数据分片编号。
Input
有多组输入数据,你必须处理到EOF为止。
每组输入数据第一行就一个整数n(2<=n<=105), 表示数据分成了n片。
第二行有n-1个以空格隔开的整数,表示目的主机收到的数据分片的编号,由于网络传输的一些因素,数据分片到达的顺序是随机的。
Output
输出缺失的数据片编号。
Sample Input
5
5 3 2 1
Sample Output
4
答案
下面展示 实现代码
。
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int num[n];
for(int i = 0; i < n-1; i++)
{
scanf("%d",&num[i]);
}
sort(num, num + n-1);//从小到大排序
int j = 0;
for(int i = num[0]; i <= num[n-2]; i++)
{
if(i != num[j])
{
printf("%d\n",i);
break;
}
j++;
}
}
return 0;
}
本题感悟
本块内容可能来自课本或其他网站,若涉及侵权问题,请联系我进行删除,谢谢大家啦~
思路:
把输入的字符串用数组存起来,用sort对数组进行排序,遍历看看到底缺啥(哼!最近有点不开心!我就是怎么有脾气!)
本来用的是cin和cout的,没成想超时了,改成scanf和printf就AC了,开熏~
以上。