问题描述
给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
输入格式
输入的第一行包含一个整数n,表示给定整数的个数。
第二行包含所给定的n个整数。
输出格式
输出一个整数,表示值正好相差1的数对的个数。
样例输入
6
10 2 6 3 7 8
样例输出
3
样例说明
值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。
评测用例规模与约定
1<=n<=1000,给定的整数为不超过10000的非负整数。
解题思路:解法可以比较直接。即每输入一个数据就逐一和前面已输入过的数据作差,差值满足条件的就让用于计数的变量加一,最后输出计数的变量即可。
对,如果你和我一样是从最新一年刷下来的,看这道题时会有种熟悉感,因为这就和之前的最小差值一模一样呀!
解题代码:
#include<stdio.h>
#define N 1001
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0, j = 0;
int cnt = 0, diff = 0;
int arr[N] = {0};
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
if (i >= 1)
for (j = 0; j <= i - 1; j++)
{
diff = arr[i] - arr[j];
if (diff == 1 || (-diff) == 1)
cnt++;
}
}
printf("%d", cnt);
return 0;
}
看完觉得有觉得帮助的话不妨点赞收藏鼓励一下,有疑问或看不懂的地方或有可优化的部分还恳请朋友们留个评论,多多指点,谢谢朋友们!