题目描述
给定 n 个不同的整数,问这些数中有多少对整数,它们的值正好相差 1。
输入格式
输入的第一行包含一个整数 n,表示给定整数的个数。
第二行包含所给定的 n 个整数。
输出格式
输出一个整数,表示值正好相差 1 的数对的个数。
数据范围
1≤n≤1000,
给定的整数为不超过 10000 的非负整数。
输入样例:
6
10 2 6 3 7 8
输出样例:
3
解题思路:
一、对输入的数字进行排序;
二、计算相邻数对res:如果后一个数等于前一个数+1,则res++;
三、输出res。
代码:
#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
const int N = 1010;
using namespace std;
int main()
{
int n;
scanf("%d", &n);
int num[N] = {0};
//初始化相邻数对数目
int res = 0;
for(int i = 0; i < n; i ++){
scanf("%d", &num[i]);
}
//对输入的数字进行排序
int temp = 0;
for(int i = 0; i < n-1; i ++){
for(int j = i+1; j < n; j ++){
if(num[j] < num[i]){
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//输出检验一下,但是最后还是注释
// for(int i = 0; i < n; i ++){
// printf("%d\n", num[i]);
// }
//如果后一个数字=前一个数字+1,则res++
for(int i = 0; i < n-1; i ++){
for(int j = i+1; j < n; j ++){
if(num[i] + 1 == num[j]){
res ++;
}
}
}
//输出res
printf("%d\n", res);
return 0;
}
恭喜你,又完成了一道CCF-CSP题目,这里是希望你越来越好的小全全,一起努力加油吧!
求相邻差值为1的数对
411

被折叠的 条评论
为什么被折叠?



