蓝桥杯第六届国赛JAVA真题----奇怪的数列
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯第六届国赛JAVA真题----奇怪的数列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
標題:奇怪的數列
從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及以上版本的特性。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
從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,否則按無效代碼處理。
考察方向:字符串拼接,每次將計量數(初始為1,用于統計重復字符)與對應位的字符串拼接成新的字符串。
完整代碼如下:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int cnt = 1;String str = in.next();int m = in.nextInt();while (m != 0) {String ss = "";for (int i = 0; i < str.length(); i++) {if (i+1 < str.length() && str.charAt(i) == str.charAt(i+1)) {cnt++;continue;}ss += cnt + "" + str.charAt(i) ;cnt = 1;}str = ss;m--;}System.out.println(str);} }遞歸解法:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();f(n+"", 0, m);}private static void f(String str, int num, int m) {if (num >= m) {System.out.println(str);return ;}StringBuffer sb = new StringBuffer();int cnt = 1 ;for (int i = 0; i < str.length()-1; i++) {if (str.charAt(i) != str.charAt(i+1)) {sb.append(cnt + "" + str.charAt(i));cnt = 1;}else {cnt++;}}sb.append(cnt + "" + str.charAt(str.length()-1));f(sb.toString(), num+1, m);} }創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的蓝桥杯第六届国赛JAVA真题----奇怪的数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows管道技术
- 下一篇: 使用httpclient4.3.2来实现