博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 1083 是否存在相等的差(20)(代码+思路)
阅读量:4350 次
发布时间:2019-06-07

本文共 848 字,大约阅读时间需要 2 分钟。

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

给定 N 张卡片,正面分别写上 1、2、……、N,然后全部翻面,洗牌,在背面分别写上 1、2、……、N。将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差?

输入格式:

输入第一行给出一个正整数 N(2 ≤ N ≤ 10 000),随后一行给出 1 到 N 的一个洗牌后的排列,第 i 个数表示正面写了 i 的那张卡片背面的数字。

输出格式:

按照“差值 重复次数”的格式从大到小输出重复的差值及其重复的次数,每行输出一个结果。

输入样例:

83 5 8 6 2 1 4 7

输出样例:

5 23 32 2

PS:

        我的思路:这道题记录重复差,可以利用map模板的特性(自动排序,不会用额外的key) 。

        注意:1、map自动排序默认为升序,所以我们需要加入第三个参数。

                2、题目引言最后那句话是要求我们求存在相等的重复差,只要考虑重复差次数大于1的情况就行了

#include 
#include
using namespace std;int main(){ map
::iterator it; map
> map; //第三个参数compare(默认为less
),此时我们需要降序 int n, t; cin >> n; for (int i = 1; i <= n; i++) { cin >> t; map[abs(t - i)]++; //取绝对值加到map中 } for (it = map.begin(); it != map.end(); it++) if(it->second>1) //注意要重复次数大于1才输出 cout << it->first << " " << it->second << endl; return 0;}

 

转载于:https://www.cnblogs.com/F-itachi/p/9974423.html

你可能感兴趣的文章
数据挖掘之功能
查看>>
2018-07-13E-R图设计数据库+三大范式+修改用户密码+分配用户权限
查看>>
移动广告行业的复苏
查看>>
Cookie机制,session机制
查看>>
nginx配置错误
查看>>
47 【golang】mysql操作
查看>>
Using ARITHABORT with LLBLGen
查看>>
增量模型与快速模型的异同。
查看>>
Hanoi双塔问题(简单的枚举)
查看>>
lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)
查看>>
NDK以及C语言基础语法(一)
查看>>
ES6/ES2015核心内容 import export
查看>>
Day4-文件,json字典文件互转,函数
查看>>
vector引用参数
查看>>
NTC温度采集之数据拟合——freemat软件实现
查看>>
maven私服nexus3.9安装配置
查看>>
U盘出现大量乱码文件,并且不能彻底删除
查看>>
UEditor添加一个普通按钮及其他使用注意事项
查看>>
C语言的第一次实验报告
查看>>
spring JDBC 批量插入数据
查看>>