PAT (Basic Level) Practice 1083 是否存在相等的差 (20 分)

题目:1083 是否存在相等的差 (20 分)

来源:PAT (Basic Level) Practice

传送门 1083 是否存在相等的差

题面

PAT (Basic Level) Practice 1083 是否存在相等的差 (20 分)

题意:给定1、2、……、N的一个序列,求第i个数字a[i]与i的差值的绝对值的出现次数≥2的该绝对值与出现次数,按绝对值大小降序输出

思路:结构体存储,注意差值为0的情况

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	ll num=0;
	ll cnt=0;	
};

node m[20000];
int main(){
	ll n,x;
	cin>>n;
	for(ll i=1;i<=n;i++){
		cin>>x;
		x = abs(i-x);
		m[x].num++;
		m[x].cnt = x; 
	}	
	for(ll i = n;i>=0;i--){
		if(m[i].num>1){
			cout<<m[i].cnt<<" "<<m[i].num<<"\n";
		}
	}
	return 0;
}
上一篇:解决asp.net Core Mvc网页汉字乱码问题


下一篇:Sorted Set源码阅读,有序集合为何能同时支持点查询和范围查询