zoukankan      html  css  js  c++  java
  • PAT(B) 1084 外观数列(Java)

    题目链接:1084 外观数列 (20 point(s))

    题目描述

    外观数列是指具有以下特点的整数序列:

    d, d1, d111, d113, d11231, d112213111, …

    它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描述就是 1 个 d,2 个 1,1 个 3,所以下一项就是 d11231。当然这个定义对 d = 1 也成立。本题要求你推算任意给定数字 d 的外观数列的第 N 项。

    输入格式

    输入第一行给出 [0,9] 范围内的一个整数 d、以及一个正整数 N(≤ 40),用空格分隔。

    输出格式

    在一行中给出数字 d 的外观数列的第 N 项。

    输入样例

    1 8
    

    输出样例

    1123123111
    

    Java代码

    /**********************************************************************************
    Submit Time			Status		Score	Problem	Compiler		Run Time	User
    8/1/2019, 13:04:39	Accepted	20		1084	Java (openjdk)	88 ms		wowpH
    **********************************************************************************/
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    
    public class Main {
    	public static void main(String[] args) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		String[] dn = br.readLine().split(" ");
    		int n = Integer.parseInt(dn[1]);			// 需要计算的项数
    
    		char[] oldArr = dn[0].toCharArray();		// 上一项
    		while ((--n) > 0) {							// 循环n-1次
    			char[] newArr = new char[oldArr.length * 2];// 大小最多为2倍
    			int length = 0;							// 当前项的字符个数
    			newArr[length++] = oldArr[0];			// 至少有1个字符
    			int number = 1;							// 当前字符的连续的个数,至少1个
    			for (int i = 1; i < oldArr.length; ++i) {
    				if (oldArr[i] == newArr[length - 1]) {// 第i个字符和当前字符相同
    					++number;						// 当前字符个数加1
    				} else {							// 不同
    					newArr[length++] = (char) (number + 48);// 将个数添加到新数组中
    					newArr[length++] = oldArr[i];	// 下一个字符
    					number = 1;						// 初始连续的个数为1
    				}
    			}
    			newArr[length++] = (char) (number + 48);// 最后1个的个数添加到新数组中
    			oldArr = Arrays.copyOf(newArr, length);	// 拷贝新项到oldArr中
    		}
    		System.out.println(String.valueOf(oldArr));	// 转成字符串并输出
    	}
    }
    

    提交结果

    提交结果

  • 相关阅读:
    centos7 修改中文字符集
    Can't locate Data/Dumper.pm in perl5的处理
    MySQL crash-safe replication(3): MySQL的Crash Safe和Binlog的关系
    MySQL crash-safe replication(2):
    MySQL crash-safe replication(1)
    《Linux性能调优指南 》全书
    Oracle Database 12c Preinstall Steps for Oracle Linux Simplified
    MySQL的binlog2sql闪回
    Python pip 安装与使用
    LSM树由来、设计思想以及应用到HBase的索引
  • 原文地址:https://www.cnblogs.com/wowpH/p/11687440.html
Copyright © 2011-2022 走看看