思路
注意
- 输出只需要输出重复的,出现一次不叫重复,我像个弱智一样反复读了好多遍题目才懂。
2021.04.13
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e4+5;
int hashmap[N];
int main(){
memset(hashmap, 0, sizeof hashmap);
int n, x;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &x);
hashmap[abs(x - i)]++;
}
for(int i = n; i >= 0; i--){
if(hashmap[i] > 1){
printf("%d %d\n", i, hashmap[i]);
}
}
return 0;
}
旧版本
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int hash[10005]={0};
int arr[10005];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
hash[abs(arr[i]-i)]++;
}
for(int i=n-1;i>=0;i--){
if(hash[i]>1){
printf("%d %d\n",i,hash[i]);
}
}
return 0;
}