您的位置:首页 > 其它

PAT 1038

2016-02-27 22:27 337 查看
题目链接如下:

pat 1038

此题的重点在于 32,321 3214 在排序时应当是 32 3214 321 的顺序,仔细观察发现只需先循环的填充不足8位的数至八位再排序即可得到正确的序列 如该用例中 321->32132132 3214->32143214 32->32323232 如何排序即一目了然

同时要注意最开始的0是不输出的,并且如果输入的全是0则应当输出一个0

此题仍然对于java来说无法ac,有一组超时,但使用c语言则可以ac

代码如下(有一组超时)

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

public class Main {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int flag1=1;
int flag2=1;
ArrayList<A> ar=new ArrayList<A>();
for(int i=0;i<n;i++){
ar.add(new A(sc.next()));
}
Collections.sort(ar);
for(int i=0;i<ar.size();i++){
A a=ar.get(i);
char[] rr=a.s.toCharArray();
for(int j=0;j<rr.length;j++){
if(rr[j]=='0'){
if(flag1==0){
System.out.print(rr[j]);
}
else
continue;
}
else{
System.out.print(rr[j]);
flag1=0;
flag2=0;
}
}
}
if(flag2==1) System.out.println('0');
else System.out.println();
}

}
class A implements Comparable<A>{
String s;
A(String s){
this.s=s;
}
@Override
public int compareTo(A o) {
String m1=s;
String m2=o.s;
int l1=m1.length();
int l2=m2.length();
for(int i=0;i<8-l1;i++)
m1+=s.toCharArray()[i%l1];
for(int i=0;i<8-l2;i++)
m2+=o.s.toCharArray()[i%l2];

return m1.compareTo(m2);
}

}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pat