30.數列中A[n+1]都是A[n]的描述 問題


有一個數列A[n],從A[0]開始每一項都是一個數字,數列中A[n+1]都是A[n]的描述,其中A[0]=1
規則如下
A[0]:1
A[1]:11 含義其中A[0]=1是1個1 即11,  表示A[0]從左到右連續出現了1次1
A[2]:21 含義其中A[1]=11是2個1 即21,  表示A[1]從左到右連續出現了2次1
A[3]:1211 含義其中A[2]從左到右是由一個2和一個1組成 即1211,  表示A[2]從左到右連續出現了一次2又連續出現了一次1
A[4]:111221  含義A[3]=1211 從左到右是由一個1和一個2兩個1 即111221,  表示A[3]從左到右連續出現了一次1又連續出現了一次2又連續出現了2次1

輸出第n項的結果
0<= n <=59
輸入描述:
數列第n項   0<= n <=59
4
輸出描述
數列內容
111221

 

查看代碼

import java.util.*;

public class Demo30 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());

        String content = "1";
        if(n == 0){
            System.out.println(content);
            return ;
        }

        StringBuilder sb ;
        for(int i = 1; i <= n; i++){
            sb = new StringBuilder();
            char[] chars = content.toCharArray();

            char compare = chars[0]; //初始狀態,比較起點
            int count = 1;
            for(int j = 1; j < content.length(); j++){
                if(chars[j] == compare) count++;
                else{
                    sb.append(count).append(compare);
                    compare = chars[j];
                    count = 1;
                }
            }
            //對中間過程還是思考還是不夠清晰,剛開始漏了這行代碼,一直得不到正確結果
            sb.append(count).append(compare);
            content = sb.toString();
        }
        System.out.println(content);
    }
}

總結:每一步都不能想當然帶過去思考,讓思維有跡可循的前提是每一步都有所依據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM