题目介绍:
其实这个题猛的一读起来是没有什么头绪的,什么是Jam的计数法?前提是知道什么是Jam数,Jam数其实就是几个字符组成的一个字符串,但是这个字符串中的字符遵循严格的递增顺序,这个题的意思就是我们输入一个字符串,我们之后找他后面的五个满足条件的Jam数字,打个比方就是我们输入的三个数是2 10 5,这三个数的含义是26个字母中的字母标号为2-10的字母,而5代表的是我们接下来要输入的Jam数字的长度,
题介绍的差不多了,下面介绍思路。
解题思路:
既然我们需要用到26个字母,那么我们可以首先把26个字母给放在一个长度为27的数组ch1中,素组第0个不放字符,之后我们可以通过我们输入的2和10来求出满足条件的字符然后存在另一个数组ch2中,然后我们将输入的Jam字符串str1给转化为字符数组ch3,我们可以用indexof()来遍历ch3与字符串str1来求出ch3中的每一个字符在str1中的位置,然后我们可以利用一个while循环来使底下的for循环循环5次,定义一个flag=0,如果满足条件的话,就输出一个Jam数字,flag++,但是ch3每一次是要改变着的,大致思路就是这样的。
注意事项:
比较复杂,敲代码的时候注意一点,一定要理清思路。
参考代码:
package itcast3; import java.util.Scanner; public class L1104 { public static void main(String[] args) { Scanner m=new Scanner(System.in); char ch1[]=new char[27]; char c='a'; for(int i=1;i<ch1.length;i++) { ch1[i]=c; c=(char) (c+1); } int number1,number2,number3; String str1; number1=m.nextInt(); number2=m.nextInt(); number3=m.nextInt(); str1=m.next(); int length=number2-number1+1; char ch2[]=new char[length]; int j=0; for(int i=number1;i<=number2;i++) { ch2[j]=ch1[i]; j++; } String str2=new String(ch2); char ch3[]=new char[str1.length()]; ch3=str1.toCharArray(); int flag=0; while(flag!=5) { for(int i=str1.length()-1;i>=0;i--) { String str3=""; int number=str2.indexOf(ch3[i]); if(number<str2.length()-1) { if(i==ch3.length-1) { for(int s=0;s<i;s++) { System.out.print(ch3[s]); str3+=ch3[s]; } System.out.print(ch2[number+1]); str3+=ch2[number+1]; System.out.println(); flag++; ch3=str3.toCharArray(); break; } else if(ch3[i+1]!=ch2[number+1]) { for(int s=0;s<i;s++) { System.out.print(ch3[s]); str3+=ch3[s]; } for(int h=number+1;h<number+1+ch3.length-i;h++) { System.out.print(ch2[h]); str3+=ch2[h]; } System.out.println(); flag++; ch3=str3.toCharArray(); break; } } } } } }
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复