牛牛的好朋友羊羊在纸上写了n + 1个整数,羊羊接着抹除掉了一个整数,给牛牛猜他抹除掉的数字是什么。牛牛知道羊羊写的整数神排序之后是一串连续的正整数,牛牛现在要猜出所有可能是抹除掉的整数。例如:
10 7 12 8 11 那么抹除掉的整数只可能是9
5 6 7 8 那么抹除掉的整数可能是4也可能是9
输入描述 :
输入包括2行:
第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数
第二行为n个整数num[i](1 <= num[i] <= 1000000000)
输出描述:
在一行中输出所有可能是抹除掉的数, 从小到大输出, 用空格分割, 行末无空格。如果没有可能的数,则输出mistake
输入例子1 :
2
3 6
输出例子1 :
mistake
#include <iostream>
using namespace std;
void swap01(int array[], int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void SelectionSort(int array[], int len) // O(n*n)
{
int i = 0;
int j = 0;
int k = -1;
for (i = 0; i < len; i++)
{
k = i; //寻找最小元素的下标
for (j = i + 1; j < len; j++)
{
if (array[j] < array[k]) //开始寻找最小元素的下标
{
k = j;
}
}
swap01(array, i, k);
}
}
int check(int array[], int len)
{
for (int i = 1; i < len; i++)
{
if (array[i] - array[i - 1] == 2)
return array[i - 1];
/*else if (array[i] - array[i - 1] > 2)
return -1;*/
}
return 0;
}
int main04()
{
int n;
cin >> n;
int num[50];
for (int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
num[i] = tmp;
}
//int res[2];
int pos = -1;
int count = -1;
SelectionSort(num, n);
if (((num[n - 1] - num[0]) == (n - 1)))
{
count = 2;
}
else
{
for (int i = 1; i < n; i++)
{
if (num[i] - num[i - 1] == 2)
{
pos = i;
//count = 1;
count++;
if (count > 0)
{
count = -1;
break;
}
//if (pos)
//break;
}
else if (num[i] - num[i - 1] > 2)
{
//count = 0;
break;
}
/*else if (array[i] - array[i - 1] > 2)
return -1;*/
}
}
if (count == 2)
{
if (num[0] > 1)
cout << num[0] - 1 << " " << num[n - 1] + 1;
else
cout << num[n - 1] + 1;
}
else if (count == 0)
{
cout << num[pos] - 1;
}
else
cout << "mistake";
system("pause");
return 0;
}