CCF CSP 编程题目和解答-----试题名称:相邻数对-------201409-1

来源:互联网 发布:广州java招聘 编辑:程序博客网 时间:2024/05/16 11:13
问题描述
试题编号: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的非负整数。



#include<iostream>#include<stdlib.h>#include<vector>#include<algorithm>#include<string>#include<map>#include<strstream>using namespace std;int main(){int n;cin >> n ;map<int, int> all;for (int i = 0; i < n; i++){int tem;cin >> tem;all.insert(pair<int,int>(tem,0));}int count = 0;map<int, int>::iterator it = all.begin();for (it; it != all.end(); it++){int tem = it->first;int less = tem - 1;int more = tem + 1;if (all.find(less) != all.end())count++;if (all.find(more) != all.end())count++;}count /= 2;//所有的对子都重复算了两遍cout << count;}



0 0