试题编号: | 201409-1 |
---|---|
试题名称: | 相邻数对 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述 | 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 |
输入格式 | 输入的第一行包含一个整数n,表示给定整数的个数。 |
第二行包含所给定的n个整数。 | |
输出格式 | 输出一个整数,表示值正好相差1的数对的个数。 |
样例输入 | 6 |
10 2 6 3 7 8 | |
样例输出 | 3 |
样例说明 | 值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。 |
评测用例规模与约定 | 1<=n<=1000,给定的整数为不超过10000的非负整数。 |
分析:
找出输入的数中,有多少对相差为1的数队。
从第1个元素开始,与它后面的所有元素相比,如果相差为1,则是一对相邻数对
#include <iostream>
using namespace std;
int main()
{
int i,j,n,s;
cin>>n;
int a[n];
for(i=0;i<n;i++) cin>>a[i];
for(i=0,s=0;i<n-1;i++)
{
for(j=i+1;j<n;j++) ///从第一个元素开始与它后面所有元素比较
{
if((a[i]-a[j]==1)||(a[i]-a[j]==-1)) s++; ///如果相差为1,则是相邻数队
}
}
cout<<s;
return 0;
}
if((a[i]-a[j]1)||(a[i]-a[j]-1))也可以改成 if(fabs(a[i]-a[j]==1))
但要加上头文件#include <math.h>