试题编号: | 201409-1 |
试题名称: | 相邻数对 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 输入格式 输入的第一行包含一个整数n,表示给定整数的个数。 输出格式 输出一个整数,表示值正好相差1的数对的个数。 样例输入 6 样例输出 3 样例说明 值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。 评测用例规模与约定 1<=n<=1000,给定的整数为不超过10000的非负整数。 |
解题思路:
这题跟前面的最大波动最小差值很相似。不用对数组排序,直接for循环遍历,输出差值为1的相邻数字即可。
100分代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a,a+n); //对数组中的元素进行升序排序
int count = 0; //用来记录相邻数对
for (int i = 0; i < n-1; i++)
{
if(a[i+1]-a[i] == 1)
{
count++;
}
}
cout << count << endl;
return 0;
}
——————————————2019.09.07更新——————————————————
#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i<= b; i++)
int main()
{
int n,cnt = 0;
cin >> n;
vector<int> v;
Up(i,1,n)
{
int _;
cin >> _;
v.push_back(_);
}
sort(v.begin(),v.end());
Up(i,1,v.size()-1)
{
if(v[i]-v[i-1] == 1)
{
cnt++;
}
}
cout << cnt << endl;
return 0;
}