java实现第六届蓝桥杯奇怪的数列

本文介绍了一种基于描述上一行数字序列的奇特数列生成算法,通过具体实例解析了算法的工作原理,并提供了一个Java实现代码示例,帮助读者理解和应用这一有趣而独特的数列生成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

奇怪的数列

从X星截获一份电码,是一些数字,如下:
13
1113
3113
132113
1113122113

YY博士经彻夜研究,发现了规律:
第一行的数字随便是什么,以后每一行都是对上一行“读出来”
比如第2行,是对第1行的描述,意思是:1个1,1个3,所以是:1113
第3行,意思是:3个1,1个3,所以是:3113

请你编写一个程序,可以从初始数字开始,连续进行这样的变换。

数据格式:

第一行输入一个数字组成的串,不超过100位
第二行,一个数字n,表示需要你连续变换多少次,n不超过20

输出一个串,表示最后一次变换完的结果。

例如:
用户输出:
5
7

则程序应该输出:
13211321322115

资源约定:
峰值内存消耗(含虚拟机) < 512M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。


import java.util.Scanner;

public class Qiguaideshulie {
    public static void getResult(String A, int n) {
        while(n > 0) {
            n--;
            StringBuffer result = new StringBuffer("");
            for(int i = 0;i < A.length();i++) {
                int count = 1;
                int j = i + 1;
                for(;j < A.length();j++) {
                    if(A.charAt(i) == A.charAt(j))
                        count++;
                    else
                        break;
                }
                result.append(count);
                result.append(A.charAt(i));
                i = j - 1;
            }
            A = result.toString();
        }
        System.out.println(A);
    }

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        String A = in.next();
        int n = in.nextInt();
         getResult(A, n);
    }
}

### 第十二届蓝桥杯 Java 研究生组 比赛信息 #### 比赛概述 第十二届蓝桥杯全国软件和信息技术专业人才大赛于2021年举办,旨在促进高校计算机教育的发展,提高大学生的编程能力和创新意识。该赛事分为多个阶段,包括校内选拔赛、省级竞赛以及全国总决赛。 #### 赛事安排 - **报名时间**:通常在每年秋季开放注册通道。 - **初赛(省赛)**:一般在次年的3月至4月间举行。 - **决赛**:大约在5月底至6月初进行。 对于Java研究生组而言,比赛形式主要为上机编程测试,选手需独立完成若干道算法设计与实现题目,在规定时间内提交最优解法。 #### 题目特点 根据以往的经验,蓝桥杯Java研究生组的试题难度较大,涵盖了广泛的知识领域,如数据结构、算法分析、操作系统原理等。具体到第十二届的情况: - **基础题型**:涉及字符串处理、数组操作等方面的基础知识点。 - **中级挑战**:考察动态规划、贪心策略的应用能力。 - **高级难题**:可能涉及到图论模型建立、复杂度优化等问题求解技巧[^1]。 ```java // 示例代码展示如何解决一道典型的蓝桥杯题目——计算斐波那契数列前N项之和 public class FibonacciSum { public static long fib(int n) { if (n <= 1) return n; long a = 0, b = 1, c; for (int i = 2; i <= n; ++i) { c = a + b; a = b; b = c; } return b; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); System.out.println(fib(N)); } } ``` #### 参赛建议 为了更好地准备此类竞赛,参赛者应当注重以下几个方面: - 加强基础知识的学习,特别是针对常见算法的理解及其应用场景; - 多参与模拟训练,熟悉不同类型的考题模式并积累实战经验; - 关注官方发布的历年真题解析资料,从中汲取灵感找到适合自己的复习方法;
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值