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

69 阅读1分钟

问题描述

试题编号: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;
}


\

\