首页 > 试题广场 >

数字游戏

[编程题]数字游戏
  • 热度指数:6760 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛牛举办了一场数字游戏,有n个玩家参加这个游戏,游戏开始每个玩家选定一个数,然后将这个数写在纸上(十进制数,无前缀零),然后接下来对于每一个数字将其数位按照非递减顺序排列,得到新的数,新数的前缀零将被忽略。得到最大数字的玩家赢得这个游戏。

输入描述:
输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 50),即玩家的人数
第二行n个整数x[i](0 ≤ x[i] ≤ 100000),即每个玩家写下的整数。


输出描述:
输出一个整数,表示赢得游戏的那个玩家获得的最大数字是多少。
示例1

输入

3
9638 8210 331

输出

3689
思路:先把数字以字符串的形式读进来,再依次的把字符串进行分解生成一个新的一维数组,再给数组排序,根据排序好的数组生成一个新的字符串(注意的是如果数组的第一个元素是0则生成新的字符串时把零去掉),用上述的方法每一个旧的字符串都会生成一个对应新的字符串,最后找出最大的一个就行了
import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin=new Scanner (System.in);
		int n=cin.nextInt();//玩家人数(数字数量)
		String  str[]=new String [n];
		for(int i=0;i<n;i++) {
			String s=cin.next();
			String s1="";
			int b[]=new int [s.length()];
		   for(int j=0;j<s.length();j++) {
			   b[j]=Integer.parseInt(String.valueOf(s.charAt(j)));
		   }
		   Arrays.sort(b);
		   int dd=0;
		   if(b[dd] !=0)str[i]=String.valueOf(b[dd]);
		   else {
			   dd++;
			   str[i]=String.valueOf(b[dd]);
		   }
		   for(int j=dd+1;j<b.length;j++) {
			   if(j==0 && b[j]==0)continue;
			   else  str[i]=str[i]+String.valueOf(b[j])+s1;
		   }
			
		}
		int max=Integer.parseInt(str[0]);
		for(int i=1;i<n;i++) {
			max=Math.max(max, Integer.parseInt(str[i]));
		}
		System.out.print(max);

	}

}

发表于 2019-11-05 19:05:10 回复(0)
假设测试数据n=3,输入的数分别为
9638 8210 331 ---------将这三个整数输入到字符串数组中,
然后再用for循环将字符串数组转变为字符数组,当n=0时,输入字符串的9638,转变为
'9''6''3''8'四个字符,然后进行升序排列,如果不为0 在用stringbuffer追加到里面去
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
    public static void main(String[]args)
    {
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        String[]data=new String[n];
        for(int i=0;i<n;i++)
        {
            data[i]=input.next();
        }
        int temp=0;
        int max=0;
        for(int i=0;i<n;i++)
        {
            StringBuffer sb= new StringBuffer();
            char[]arr=data[i].toCharArray();
             Arrays.sort(arr);
            for(int j=0;j<arr.length;j++)
            {
                if(arr[j]!='0')
                {
                    sb.append(arr[j]);
                }
            }
            temp=Integer.parseInt(sb.toString());
            if(temp>max)
            {
                max=temp;
            }
        }
        System.out.println(max);
    }
}

发表于 2019-05-06 23:11:38 回复(1)
import java.util.*;
public class Main{
    public static void main(String[] args){
        try(Scanner in = new Scanner(System.in)){
            int n = in.nextInt(),i = 0;
            String[] str = new String[n];
            while(i < n){
                str[i] = in.next();
                i++;
            }
            System.out.println(helper(str));
        }
    }
    public static int helper(String[] str){
        int max = 0;
        for(String s:str){
            char[] a = s.toCharArray();
            Arrays.sort(a);
            max = Math.max(Integer.parseInt(new String(a)),max);
        }
        return max;
    }
}


发表于 2019-01-16 17:16:34 回复(0)