输入多个整数组成最大多位整数
来源:互联网 发布:蜂窝数据打不开 编辑:程序博客网 时间:2024/06/06 01:10
/**
* 输入n,表示要输入的数字个数,接下来输入n个数字,输出这n个数字组成的最大多位整数。
* step1:当某一位的数字相等时,比较下一位是否相等;step2:当长度较短的那个数字(设为s,其长度为s1)每一位都比较过,
* 将长度较长的那个数字(设为l)剩下的未比较过的数字与s的第一位开始比起,重复步骤1、2;step3:若s和l的每一位都已经比较过,
* 还没有出现大小关系,则比较l的后s1位数与s的大小,较小的那个所对应的数字应该放在前面。
*/
import java.util.*;
public class MaxNum {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String res = "";
int n = sc.nextInt();
int[] num = new int[n];
for(int i = 0;i < n;i++){
num[i] = sc.nextInt();
}
for(int i = 0;i < n - 1;i++){
for(int j = i + 1;j < n;j++){
String mStr = "" + num[i],nStr = "" + num[j];
int flag = 1;
for(int p = 0;p < (mStr.length() > nStr.length() ? mStr.length() : nStr.length());p++){
if(mStr.charAt(p % (mStr.length())) < nStr.charAt(p % (nStr.length()))){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
break;
}else if(mStr.charAt(p % (mStr.length())) > nStr.charAt(p % (nStr.length()))){
flag = 0;break;
}
}
if(flag == 1){
if(mStr.length() > nStr.length()){
String keyValue = "";
for(int p = 0;p < nStr.length();p++){
keyValue += mStr.charAt(mStr.length() - nStr.length() + p);
}
if(Integer.parseInt(keyValue) > Integer.parseInt(nStr)){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
}
}else if(mStr.length() < nStr.length()){
String keyValue = "";
for(int p = 0;p < mStr.length();p++){
keyValue += nStr.charAt(nStr.length() - mStr.length() + p);
}
if(Integer.parseInt(keyValue) < Integer.parseInt(mStr)){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
}
}
}
}
}
for(int i = 0;i < n;i++){
res = res + num[i];
}
System.out.println(res);
}
}
* 输入n,表示要输入的数字个数,接下来输入n个数字,输出这n个数字组成的最大多位整数。
* step1:当某一位的数字相等时,比较下一位是否相等;step2:当长度较短的那个数字(设为s,其长度为s1)每一位都比较过,
* 将长度较长的那个数字(设为l)剩下的未比较过的数字与s的第一位开始比起,重复步骤1、2;step3:若s和l的每一位都已经比较过,
* 还没有出现大小关系,则比较l的后s1位数与s的大小,较小的那个所对应的数字应该放在前面。
*/
import java.util.*;
public class MaxNum {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String res = "";
int n = sc.nextInt();
int[] num = new int[n];
for(int i = 0;i < n;i++){
num[i] = sc.nextInt();
}
for(int i = 0;i < n - 1;i++){
for(int j = i + 1;j < n;j++){
String mStr = "" + num[i],nStr = "" + num[j];
int flag = 1;
for(int p = 0;p < (mStr.length() > nStr.length() ? mStr.length() : nStr.length());p++){
if(mStr.charAt(p % (mStr.length())) < nStr.charAt(p % (nStr.length()))){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
break;
}else if(mStr.charAt(p % (mStr.length())) > nStr.charAt(p % (nStr.length()))){
flag = 0;break;
}
}
if(flag == 1){
if(mStr.length() > nStr.length()){
String keyValue = "";
for(int p = 0;p < nStr.length();p++){
keyValue += mStr.charAt(mStr.length() - nStr.length() + p);
}
if(Integer.parseInt(keyValue) > Integer.parseInt(nStr)){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
}
}else if(mStr.length() < nStr.length()){
String keyValue = "";
for(int p = 0;p < mStr.length();p++){
keyValue += nStr.charAt(nStr.length() - mStr.length() + p);
}
if(Integer.parseInt(keyValue) < Integer.parseInt(mStr)){
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
flag = 0;
}
}
}
}
}
for(int i = 0;i < n;i++){
res = res + num[i];
}
System.out.println(res);
}
}
}
以上只是个人简单的想法,由于能力所限,没有经过优化。
输入数据4 53 535 5355 53553,输出的应当是5355 535 53553 53的字符串;
输入数据5 667 6676 66766 667667 67,输出的应当是67 667667 667 6676 66766的字符串。
0 0
- 输入多个整数组成最大多位整数
- Java实现:n个正整数,将它们连接成一排,组成一个最大的多位整数。(输入:n(n个整数),依次输入n个整数)
- 组成最大多位数
- n个正整数联接成一排,组成一个最小的多位整数
- n个正整数,联接成一排,组成一个最小(最大)的多位整数
- n个正整数联接成一排,组成一个最小的多位整数
- 设有n个正整数,将他们连接成一排,组成一个最小的多位整数
- n个正整数,联接成一排,组成一个最大(最小)的多位整数 python
- 求n个正整数连接成一排,组成一个最大的多位整数
- 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
- 设有n个正整数,将他们连接成一排,组成一个最大的多位整数
- 输入10个整数
- 输入10个整数
- C#- 多个整数的输入
- 设有n个正整数 (n<=20), 将它们连接成一排, 组成一个最大的多位整数
- java题: 设有n个正整数,将它们联接成一排,组成一个最大的多位整数。例如:N=3时,3个整数13、312、343联成的最大整数为:34331213;
- 输入任意3个整数 判断是否能组成三角形 它的面积是多少?
- 输入一个整数,输出这个整数的每一位
- Oracle的文件系统
- 动态控制评论小星星
- Fragment的详细使用
- 【并行计算-CUDA开发】FPGA 设计者应该学习 OpenCL及爱上OpenCL的十个理由
- js中的数组和字符串的部分方法
- 输入多个整数组成最大多位整数
- X服从一维高斯分布,求X^2的期望(转)
- windows 8/8.1/10 下prolific usb-to-serial common port quds 无法安装解决办法
- struts文件上传和下载的
- 2016.09.29 mall.c
- [BZOJ2435][Noi2011]道路修建(树形dp)
- Hibernate中Session.get()方法和load()方法的详细比较
- editplus 一些快捷键
- Photoshop中的“磁性套索”背后算法的OpenCV实现