Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Đề bài:
Cho dãy số gồm nn số nguyên bao gồm cả số 00. Nhiệm vụ của bạn là tìm số nguyên dương nhỏ nhất chưa có mặt trong mảng. Ví dụ với dãy {5,8, 3,7,9,1}5,8,3,7,9,1 ,ta có kết quả là 22.
Dữ liệu vào:
Cho dãy số gồm nn số nguyên bao gồm cả số 00. Nhiệm vụ của bạn là tìm số nguyên dương nhỏ nhất chưa có mặt trong mảng. Ví dụ với dãy {5,8, 3,7,9,1}5,8,3,7,9,1 ,ta có kết quả là 22.
input:
2 5 1 2 3 4 5 5 0 -10 1 3 -20
output:
6 2
code:
#include<iostream>
using namespace std;
int array2[100];
int index = 1;
int compare(const void* a, const void* b)
{
int* x = (int*)a;
int* y = (int*)b;
if (*x < *y) return -1;
else return 1;
}
void xoa(int*& p, int &n)
{
for (int i = 0; i < n; i++)
{
if (*(p + i) == *(p + (i + 1)))
{
for (int k = i; k < n-1; k++)
{
*(p + k) = *(p + k + 1);
}
n--;
}
}
}
void find(int *&p, int &n)
{
for (int i = 0; i < n; i++)
{
if ((*p) - 1 > 0)
{
array2[index] = (*p) - 1;
break;
}
if (*(p+i) > 0)
{
if (*(p + i) + 1 != *(p + (i + 1)))
{
array2[index] = *(p + i) + 1;
break;
}
else continue;
}
}
}
void nhap(int *&p, int &n)
{
int const max = n;
for (int i = 0; i < n; i++)
{
cin >> *(p + i);
}
qsort(p, max, sizeof(int), compare);
xoa(p, n);
find(p, n);
}
int main()
{
int *p;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int k=0;
cin >> k;
p = new int[k];
nhap(p, k);
index++;
}
for (int i = 1; i <= n; i++)
{
cout << array2[i] << endl;
}
return 0;
}