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
代码如下(有一组超时)
4000
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
相关文章推荐
- libdvbpsi源码分析(四)PAT表解析/重建
- PAT配置
- 什么是端口复用动态地址转换(PAT) 介绍配置实例
- MikroTik layer7-protocol
- PAT是如何工作的
- PAT 乙级题:1002. 写出这个数 (20)
- PAT (Advanced Level) Practise 1001-1010
- 数据结构学习与实验指导(一)
- PAT Basic Level 1001-1010解题报告
- 1001. 害死人不偿命的(3n+1)猜想
- 1002. 写出这个数
- 1032. 挖掘机技术哪家强
- 1001. 害死人不偿命的(3n+1)猜想 (PAT basic)
- 1002. 写出这个数(PAT Basic)
- 1004. 成绩排名(PAT Basic)
- 1006. 换个格式输出整数(PAT Basic)
- 1007. 素数对猜想(PAT Basic)
- 1008. 数组元素循环右移问题
- 1009. 说反话(PAT Basic)
- 1011. A+B和C(PAT Basic)