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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

8
3 5 8 6 2 1 4 7

输出样例:

5 2
3 3
2 2

没有绕的地方,根据题意直接做,

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
  int N;
  cin >> N;
  int * cards = new int[N+1];
  int *cishu = new int[N + 1];
  for (int i = 0; i < N + 1; i++)
    cishu[i] = 0;
  for (int i = 1; i <= N; i++) {
    cin >> cards[i];
    int t = abs(cards[i] - i);
    cishu[t]++;
  }
  for (int i = N; i>0; i--) {
    if (cishu[i]>1) {
      cout << i <<" "<< cishu[i] << endl;
    }
  }
 
 
  return 0;
}

但是,出现了部分错误(17分),看了一圈,没看出来。 和别人的答案一对比,发现一个地方错了:

 

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
  int N;
  cin >> N;
  int * cards = new int[N+1];
  int *cishu = new int[N + 1];
  for (int i = 0; i < N + 1; i++)
    cishu[i] = 0;
  for (int i = 1; i <= N; i++) {
    cin >> cards[i];
    int t = abs(cards[i] - i);
    cishu[t]++;
  }
  for (int i = N; i>=0; i--) {    //i>=0
    if (cishu[i]>1) {
      cout << i <<" "<< cishu[i] << endl;
    }
  }
 
 
  return 0;
}

就是最后的for循环条件 应该是i>=0,(我开始时忽略了差值为0的情形。--_-- `!。)

边界条件很容易出错。




相关文章
|
存储 算法 分布式数据库
Google云计算原理与应用(二)
Google云计算原理与应用(二)
313 4
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
AI写作新时代:自然语言生成技术与写作助手的结合
AI写作新时代:自然语言生成技术与写作助手的结合
393 16
|
10月前
|
安全 网络协议 网络安全
活动实践 | 低代码高效构建企业门户网站
本方案介绍如何使用魔笔平台快速构建和部署企业网站。通过DNS解析与Mobi平台建立SSL加密连接,确保数据安全传输。魔笔提供丰富的组件库和拖拽式界面设计工具,简化开发流程,支持快速开发、易于学习和安全可靠的特点。首次使用需登录魔笔控制台开通功能,并通过ROS控制台一键部署模板。编辑网站时,可轻松添加组件、管理后台数据并发布更新。最后,可通过资源栈页面清理不再需要的资源,确保环境整洁。
|
XML Java iOS开发
谈一谈 IPA 上传到 App Store Connect 的几种方法
谈一谈 IPA 上传到 App Store Connect 的几种方法
|
安全 Java Linux
ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装
ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装
561 0
|
人工智能 JSON API
|
编解码 监控 Linux
采集音频和摄像头视频并实时H264编码及AAC编码
采集音频和摄像头视频并实时H264编码及AAC编码
304 0
|
Java 测试技术 API
《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
【5月更文挑战第19天】本文介绍了在Web自动化中处理文件上传的挑战,由于Selenium WebDriver不直接支持文件上传,因此需要借助外部工具。文章提到了两种主要的上传方式:基于input框的上传和非input控件的上传。对于非input控件的上传,推荐使用AutoIt,这是一个支持Windows GUI自动化的工具。
249 9
|
网络协议 网络虚拟化 虚拟化
|
Web App开发 前端开发 JavaScript
如何快速与呼叫中心系统CTI/API/SDK接口集成
由于呼叫中心系统涉及通信、CTI、终端设备、中继线路等技术与概念,从事信息管理系统、ERP、CRM、工单系统等的研发人员一般不是非常熟悉这部分技术,当需要提供具备呼叫中心能力的解决方案时,往往要用较多的时间来研究这些相对复杂的技术,对接过程比较长,开发调试有一定的阻力,基于此,我们提出一种更加简便高效的集成方法,可以零代码集成呼叫中心平台,实现项目快速上线。
如何快速与呼叫中心系统CTI/API/SDK接口集成