学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
小猴有n张卡牌,每张卡牌都有一个点数
a
i
a_i
ai。
小猴想要知道这些卡牌中有多少对卡牌的点数的差值是1。请你帮助小猴完成这个问题。
【输入】
第一行,包含一个整数n;
第二行,包含n个正整数
a
1
,
a
2
,
…
,
a
n
a_1,a_2,\dots,a_n
a1,a2,…,an。
【输出】
一行,包含一个整数,表示结果。
【输入样例】
6
10 2 6 3 7 8
【输出样例】
3
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int box[100005];
int main()
{
int n;
cin >> n;
for (int i=1; i<=n; i++) { // 使用箱排序,记录数字,并记录该数字出现的次数
int x;
cin >> x;
box[x]++;
}
int ans = 0;
for (int i=1; i<=100000; i++) { // 枚举数
if (box[i]>0 && box[i+1]>0) { // 如果有某个数i,且也有i+1
ans += box[i] * box[i+1]; // 那么i和i+1就可以凑成一个数对,相乘得到数对数量
}
}
cout << ans << endl; // 输出结果
return 0;
}
【运行结果】
6
10 2 6 3 7 8
3