问题描述:
给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
输入格式:
第一行包含一个整数,表示给定整数的个数。
第二行包含所给定的n个整数。
输出格式:
6
10 2 6 3 7 8
样例输出:
3
解题思路:
数组进行遍历,两个for循环,数组元素之间两两相减,判断值是否为1就OK了。
Code:
#include <iostream>
using namespace std;
int main()
{
int a[1003], i;
//清空数组,全为0
memset(a, 0, sizeof(int) * 1003);
int n;
cin >> n;
int num, count = 0;
//输入数组元素
for (i = 0; i < n; i++) {
cin >> num;
a[num]++;//数组该下标的值+1
}
for (i = 0; i < 1003; i++) {
//如果两两数组的值恒等那么就说明差1
if (a[i] && a[i + 1])
count++;
}
cout << count << endl;
return 0;
}
第二版
Code:
#include <iostream>
using namespace std;
int main()
{
int n, a[1000];
int s, count = 0; //s用来接收值,count用来计数
cin >> n;
for (int i=0;i<n;i++)
{
cin >> a[i];
}
cout << endl;
for (int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
s = a[i] - a[j];
if (s<0)
{
s = -1 * s;
}
if (s==1)
{
count++;
}
}
}
cout << count << endl;
return 0;
}