
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,count=0;
cin >> n;
int a[n];
//if(n==1) cout << "0" << endl;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
for(int i=1;i<n;i++)
{
for(int j=0;j<i;j++)
{
if(abs(a[i]-a[j])==1)
{
count++;
}
}
}
cout << count << endl;
return 0;
}
**一定要注意用于计数的count必须一定要初始化为0,**否则在dev上是通过的,但是在ccf上一提交就是0分,太坑了!
二刷
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,count=0;
cin >> n;
int a[n];
for(int i=0;i<n;i++)
{
cin >> a[i];
}
sort(a,a+n);
for(int i=0;i<n-1;i++)
{
if(a[i+1]-a[i]==1||a[i]-a[i+1]==1)
count++;
}
cout << count << endl;
return 0;
}
其实用sort时间复杂度和二重暴力差不多,空间复杂度似乎比二重还要高,毕竟在排序的过程中还会产生其他的辅助空间分配,但是对于这种1000数量级,两者的差别不大,都能通过。
1826



被折叠的 条评论
为什么被折叠?



