zoukankan      html  css  js  c++  java
  • PAT(B) 1083 是否存在相等的差(Java)统计

    题目链接:1083 是否存在相等的差 (20 point(s))

    题目描述

    给定 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
    

    Java代码

    /**********************************************************************************
    Submit Time			Status		Score	Problem	Compiler		Run Time	User
    8/1/2019, 21:39:57	Accepted	20		1083	Java (openjdk)	188 ms		wowpH
    **********************************************************************************/
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
    	public static void main(String[] args) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		int n = Integer.parseInt(br.readLine());			// 卡牌数
    		String[] card = br.readLine().split(" ");			// 卡牌上的数字
    
    		int[] number = new int[n];							// 差值和重复次数
    		for (int i = 0; i < n; ++i) {
    			++number[Math.abs(i + 1 - Integer.parseInt(card[i]))];// 对应差值次数加1
    		}
    
    		for (int i = n - 1; i >= 0; --i) {
    			if (number[i] > 1) {							// 有重复
    				System.out.println(i + " " + number[i]);	// 输出重复的差值和次数
    			}
    		}
    	}
    }
    

    提交结果

    在这里插入图片描述

  • 相关阅读:
    Linux远程执行Shell代码
    docker启动时nginx与php-fpm
    给IIS安装ASP.NET 5.0 core功能
    React学习目录
    基于pgpool搭建postgressql集群部署
    react-redux的使用
    redux的使用
    render props和Error boundary(错误边界)
    context和optimize优化
    hook和Fragment
  • 原文地址:https://www.cnblogs.com/wowpH/p/11687439.html
Copyright © 2011-2022 走看看