zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 JAM计数法

    题目描述
    Jam是个喜欢标新立异的科学怪人。他不使用阿拉伯数字计数,而是使用小 写英文字母计数,他觉得这样做,会使世界更加丰富多彩。在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前 面的字母小于排在它后面的字母。我们把这样的“数字”称为Jam数字。在Jam数字中,每个字母互不相同,而且从左到右是严格递增的。每次,Jam还指定 使用字母的范围,例如,从2到10,表示只能使用{b,c,d,e,f,g,h,i,j}这些字母。如果再规定位数为5,那么,紧接在Jam数字 “bdfij”之后的数字应该是“bdghi”。(如果我们用U、V依次表示Jam数字“bdfij”与“bdghi”,则U〈V,且不存在Jam数字 P,使U〈P〈V)。你的任务是:对于从文件读入的一个Jam数字,按顺序输出紧接在后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就 输出几个。

    输入
    有2行,第1行为3个正整数,用一个空格隔开:
    s t w
    (其中s为所使用的最小的字母的序号,t为所使用的最大的字母的序号。w为数字的位数,这3个数满足:1≤s〈t≤26, 2≤w≤t-s )
    第2行为具有w个小写字母的字符串,为一个符合要求的Jam数字。
    所给的数据都是正确的,不必验证

    输出
    最多为5行,为紧接在输入的Jam数字后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。每行只输出一个Jam数字,是由w个小写字母组成的字符串,不要有多余的空格。

    样例输入
    2 10 5
    bdfij
    1
    2
    样例输出
    bdghi
    bdghj
    bdgij
    bdhij
    befgh
    1
    2
    3
    4
    5


    PS:
    (题目肯定是一样的,望审核人员直接跳过)
    该说不说,我以前很多都是从eclipse上面直接复制下来的,当时应该有百度的代码,也有自己写的,由于当时考完蓝桥杯太着急做系统了,就往CSDN上记录,导致可能自己的没发出去,把别人的发出去了,
    有找到相同的,举报也行,直接私信我也行,我有时间会自己写一遍改了的

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;
    public class Main {
    	private static char chs[] = new char[27];
    	static {
    		for (int i = 1; i < chs.length; i++) {
    			chs[i] = (char) (96 + i);
    		}
    	}
    	private static int a, b, c;
    	private static String tmp = "";
    	public static void main(String[] args) throws IOException {
    		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new
    				InputStreamReader(System.in)));
    		st.nextToken();
    		a = (int) st.nval;
    		st.nextToken();b = (int) st.nval;
    		st.nextToken();
    		c = (int) st.nval;
    		st.nextToken();
    		String str = st.sval;
    		int len = str.length(), count = 0;
    		for (int i = len - 1; i >= 0; i--) {
    			if (chs[b] - str.charAt(i) >= (len - i)) {
    				tmp = str.substring(0, i);
    				int index = str.charAt(i) - 95;
    				for (int j = i; j < len; j++) {
    					tmp += chs[index++];
    				}
    				if(count==5)
    					break;
    				if (count < 5)
    					System.out.println(tmp);
    				count++;
    				str = tmp;
    				i = len;
    			}
    		}
    	}
    }
    
    
  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074727.html
Copyright © 2011-2022 走看看