有一個數列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);
}
}
總結:每一步都不能想當然帶過去思考,讓思維有跡可循的前提是每一步都有所依據。