PTA刷题Basic篇——1083.是否存在相等的数——Day(42)

问题描述

在这里插入图片描述
找出卡片正反面差值重复的几个数,并从大到小排序输出。

题目分析

开辟一个数组,数组的index是每张卡牌正反面的差值,value是出现次数。我们在输入的过程中,只需要将卡牌的正反面相减得到的差作为索引,就value++即可。
由于最后是从大到小排列,所以我们逆序输出即可,当value>1时我们就将其输出。

代码

#include<iostream>
#include<math.h>
#define MAX_LEN 10000
using namespace std;
int main()
{
 int N;
 cin>>N;
 int res[MAX_LEN]={0};
 for(int i=0;i<N;i++)
 {
  int num;
  cin>>num;
  res[abs(num-i-1)]++;
 }
 for(int i=MAX_LEN-1;i>=0;i--)
 {
  if(res[i]>1)
  {
   cout<<i<<" "<<res[i]<<endl;
  }
 }
}

答题用时7min
Q83——finish√

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值