杭电 acm 1716 java 实现 格式很变态
来源:互联网 发布:单片机汇编set 编辑:程序博客网 时间:2024/06/09 21:53
这道题格式好麻烦,一直presentation error,改了好久,去掉了行末尾的空格,但是最后当输入0 0 0 0 时空行还无法去掉,因为我用的不是二维数组,无法判断下一行输入的是不是0 0 0 0,结果是一开始就走了弯路,再改变成二维格式也很麻烦,就先把pe版放在这了,懒得再改
Problem Description
Ray又对数字的列产生了兴趣:
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
Input
每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束。
Output
对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔。
每组输出数据间空一行,最后一组数据后面没有空行。
每组输出数据间空一行,最后一组数据后面没有空行。
Sample Input
1 2 3 41 1 2 30 1 2 30 0 0 0
Sample Output
1234 1243 1324 1342 1423 14322134 2143 2314 2341 2413 24313124 3142 3214 3241 3412 34214123 4132 4213 4231 4312 43211123 1132 1213 1231 1312 13212113 2131 23113112 3121 32111023 1032 1203 1230 1302 13202013 2031 2103 2130 2301 23103012 3021 3102 3120 3201 3210
import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Main {public static void main(String[] args) throws IOException { // Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(new FileInputStream("resource/A.in"))));//从文件读入输入 //BufferedReader只能读入以字符形式装入的流,BufferedReader(Reader in), //new BufferedReader(new InputStream(new FileInputStream("resource/A.in")))是错误的Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));while(sc.hasNextLine()) { String str=sc.nextLine(); String num[]=new String[4]; String numfinate[]=new String[24];//记录排列的 数,不包含以0开头,但包含重复的 int b=0; int length = 0;//记录得到的numfinate不为空的长度 //num=str.toCharArray(); num=str.split(" ");//取出四个数字 //如果为4个0即退出 if(num[0].equals("0")&&num[1].equals("0")&&num[2].equals("0")&&num[3].equals("0")) { return; } //将四个数字排序,加快后面的排序,考虑后面不用冒泡排序,对于已经排好序的应该有更好的排序方式 sort(num); //由四个数字组成四位数,不包含以0开头,但包含重复的 for(int i=0;i<4;i++) { String numfinate1=null; while(Integer.parseInt(num[i])==0) { i++; } numfinate1=numfinate1+num[i]; for(int j=0;j<4;j++) { if(j!=i) { String numfinate2 =numfinate1+num[j]; for(int m=0;m<4;m++) { if(m!=j&&m!=i) { String numfinate3=numfinate2+num[m]; numfinate3=numfinate3.replaceAll("null", ""); numfinate[b++]=numfinate3+num[6-i-j-m];//num[6-i-j-m]为四个数字中剩下的最后一个数 length++; } } } } } //对得到的四位数排序 sort(numfinate); for(int i=0;i<length;i++) { if(i!=0) { if(!numfinate[i].equals(numfinate[i-1])) {//判断首位是否相同,相同的在同一行 String prev=numfinate[i-1];//prev记录的是与当前numfinate[i]不同的numfinate[i-1] while((i!=length-1)&&numfinate[i].equals(numfinate[i+1])) { i++; } if(numfinate[i].charAt(0)==prev.charAt(0)) { if(i!=length-1) { if(numfinate[i].charAt(0)==numfinate[i+1].charAt(0)) { System.out.print(numfinate[i]+" "); } else { System.out.print(numfinate[i]); } } else { System.out.print(numfinate[i]); } } else { System.out.println(); System.out.print(numfinate[i]+" "); } } } else { System.out.print(numfinate[i]+" "); } } System.out.println();System.out.println(); } }public static void sort(String []num){int count=0;//记录num中不为null的个数for(int i=0;i<num.length;i++){if(num[i]!=null){count++;}}int tonum[]=new int[count];//将字符串数组中的数转换为整型for(int i=0;i<count;i++){tonum[i]=Integer.parseInt(num[i]);}for(int j=0;j<count-1;j++){for(int m=0;m<count-1-j;m++){if(tonum[m]>tonum[m+1]){int temp=tonum[m+1];tonum[m+1]=tonum[m];tonum[m]=temp;}}}for(int i=0;i<count;i++){num[i]=String.valueOf(tonum[i]);//System.out.print(num[i]+" ");}//System.out.println("sort");} }
- 杭电 acm 1716 java 实现 格式很变态
- 杭电acm 1716 java实现
- 杭电ACM Steps 第一题,a+b,java实现
- 杭电ACM 1000-Java
- ACM 杭电 1004 java
- 杭电ACM 1004 JAVA
- 【java】杭电ACM试题答案
- 杭电 ACM 1003 python实现
- 杭电ACM大数JAVA提交实例
- 杭电ACM大数JAVA提交实例
- 母牛的故事 杭电acm Java
- 红色病毒 杭电ACM Java
- 选课时间 杭电ACM Java
- 杭电ACM大数JAVA提交实例
- 杭电ACM——Java版
- 杭电ACM 1020 Encoding java解析
- 杭电ACM 1106 排序 JAVA代码
- JAVA(HDU)杭电ACM 1421
- 将bitmap保存到sd卡
- [MySQL]精妙SQL语句,基础,提升,技巧
- linux设备驱动归纳总结(九):1.platform总线的设备和驱动
- TCP长连接与短连接的区别
- iPhone真机调试安装流程
- 杭电 acm 1716 java 实现 格式很变态
- 25个增强iOS应用程序性能的提示和技巧(初级篇)
- 第十四周 项目一(3)
- std::vector中的find
- USB的描述符及各种描述符之间的依赖关系
- 标准视角--北京又开始下大雨了
- 最小生成树之prim算法
- 25个增强iOS应用程序性能的提示和技巧(中级篇)
- 【ADF】AutoSubmit、PartialSubmit、PartialTriggers 区别与联系