C语言之缺失的数据

欢迎进入我的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了,开熏~

以上。

猜你喜欢

转载自blog.csdn.net/hongguoya/article/details/106368224