2-3 最少分成几组 (100分)
给定一个包含n个数的数列,由a1,a2,…,an组成,现在将这n个数分成若干组,使得每组中任意两个数|ai-aj|>1,(i!=j)。这个数列中的n个数最少可以分成几组呢?
输入格式:
第一行包含一个整数n(1≤n≤1000)。 第二行包含n个整数a1,a2,…,an(1≤ai≤10000,所有ai互不相同)。
输出格式:
输出仅一个整数,表示数列中n个数最少可以分成的组数。
输入样例:
2
1 2
输出样例:
2
代码:
#include<stdio.h>
int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; } //自写比较函数
int main(void)
{
int n, a[1000];
int judge = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(a[0]), cmp);
for (int i = 0; i < n - 1; i++)
if (a[i + 1] - a[i] == 1)
judge = 1;
if (judge)
printf("2");
else
printf("1");
return 0;
}