欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

团体程序设计天梯赛-练习集——L1-027 出租

程序员文章站 2022-06-07 09:51:47
...

L1-027 出租 (20 分)

下面是新浪微博上曾经很火的一张图:
团体程序设计天梯赛-练习集——L1-027 出租
一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:
输入在一行中给出一个由11位数字组成的手机号码。

输出格式:
为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:
18013820100
输出样例:
int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

package com.PTA;

import java.util.ArrayList;
import java.util.Scanner;

public class 出租 {
	public static void main(String[] args) {
		
//		int[] arr = new int[]{8,2,1,0,3};
//		int[] index = new int[]{2,0,3,2,4,0,1,3,2,3,3};
//		String tel = "";
//		for(int i:index){
//			tel+= arr[i];
//		}
//		System.out.println("联系方式:"+tel);
		
		Scanner in = new Scanner(System.in);
		String str = in.next();
		char[] charArray = str.toCharArray();	//把字符串转换为数组
		int[] a = new int[11];					//把char数组的值存入a数组
		int[] b = new int[11];					//对数组a去重
		int[] c = new int[11];					//保存排好序的b数组
		int[] d = new int[11];					//输出index
		int k = 0;
		
//		Arrays.sort(charArray);			//对某一数组进行低到高的排序
		for(int i = 0;i < charArray.length;i++){
			a[i] = charArray[i]-48;						//把char数组的值存入a数组
//			System.out.println(a[i]);
			b[a[i]]++;									
		}
		System.out.printf("int[] arr = new int[]{");	//ArrayList:用来去掉最后一个多余的","
		ArrayList list = new ArrayList<>();				//也可以使用字符串进行拼接,然后用subString去掉最后一个分隔符
		for(int i = b.length-1;i >= 0 ;i--){
			if(b[i] != 0){
				list.add(i);
				c[k++] = i;								//保存从大到小排好序的b数组
				//System.out.printf(i+",");
			}
		}

		for(int i = 0 ;i<list.size();i++){
			if(i<list.size()-1){
			System.out.printf(list.get(i)+",");
			}else{
				System.out.print(list.get(i));
			}
		}
		System.out.println("};");
		
		
		for(int i=0;i<charArray.length;i++){
			for(int j = 0;j < k;j++){
				if(a[i]==c[j]){
					d[i]=j;
				}
			}
		}
//		System.out.println(c.length);
		
		System.out.printf("int[] index = new int[]{");
		for(int i=0;i<c.length;i++){
			if(i<c.length-1)
				System.out.print(d[i]+",");
			else
				System.out.print(d[i]);
		}	
		System.out.println("};");
	}
}

也不知道你们能不能看懂,做了小半个下午才完成,啊,我太难了。好久好久没有刷题了,太没效率了。以后要加强才行鸭~

我是与其终,一个风起云涌的女孩子。
很高兴你能看到我的博客,希望能对你有所帮助。

团体程序设计天梯赛-练习集——L1-027 出租

相关标签: PTA