您的位置:首页 > 其它

CCF 201409-1 相邻数对

2019-03-24 09:18 190 查看

试题编号: 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的非负整数。

Code1:

#include <iostream>
#include <cmath>
using namespace std;
const int N=1000;
int m
;
int main() {
int n,v,count=0;
cin>>n;
for(int i=0; i<n; i++) {
cin>>v;
m[i]=v;
}
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
if(abs(m[i]-m[j])==1) {
count++;
}
}
}
cout<<count<<endl;
return 0;
}

Code2:

#include <iostream>
#include <cstring>
using namespace std;
const int N=10000;
bool flag[N+2];

int main() {
int n,v,sum=0;
memset(flag,false,sizeof(flag));//将数组flag全设为false
cin>>n;
for(int i=1; i<=n; i++) {
cin>>v;
flag[v]=true;
if(flag[v-1]) {
sum++;
}
if(flag[v+1]) {
sum++;
}
}
cout<<sum<<endl;
return 0;
}

Code3

#include <iostream>
using namespace std;
int main() {
int n;
while(cin>>n) {
int buf[1001];
for(int i=0; i<n; i++) {
cin>>buf[i];
}
int sum=0;
for(int i=0; i<n; i++)
for(int j=i+1; j<n; j++)
if(buf[i]-buf[j]==1 || buf[j]-buf[i]==1)
sum++;
cout<<sum<<endl;
}
return 0;
}

你还想看**CCF刷题目录**

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: