Java计算最大数

it2026-01-31  2

标题Problem B: 计算最大数

大学生程序设计竞赛(专业组)

Time Limit: 1 Sec Memory Limit: 128 MB

Description

删除整数n中m个数字,使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888

Input

第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)

Output

每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数

Sample Input Copy

2 92081346718538 10 1008908 5

Sample Output Copy

9888 98

Java代码:

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); for (int group=0;group<n;group++) { String number = input.next(); int digtal = input.nextInt(); int index = 0; int end = digtal; int len = number.length(); int flag = 0; int i = 0; char t; char[]a = number.toCharArray(); while (end < len) { for (i = flag = index,t = a[i];i<=end;i++) { if(a[i] > t) { flag = i; t = a[i]; } } index = flag+1; end++; System.out.print(t); } System.out.println(); } } }

运行结果:

Problem: XXXX User: XXXXXXXXXXX Language: Java Result: Accepted Time:116 ms Memory:10236 kb

其他写法: 首先设置循环,然后读入字符串变量,改为字符型数组,对数组进行排序(从大到小)(或者从小到大排序,然后逆序输出也行),然后得到数组长度,用数组长度减去第二数字m,按顺序一重循环(从0到.length-1)输出print数组前面的剩下来应该输出的几位,然后System.out.println();换行,

自己试着写一下,会补😄

不止这几种写法,方法多了去了!!! 法二、法三、法四…法n,自己动用自己的聪明才智自己码!!别人的方法只能作为稍微参考!

END

最新回复(0)