Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:第一次弄这个练习

Posted by fishing_test at 2009-04-16 20:46:29 on Problem 1002
In Reply To:Re:第一次弄这个练习 Posted by:dreamwf at 2009-04-14 21:17:02
我写的, 可读性好点, 呵呵

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class P1002 {

    private static String convert(String line) {
        String ret = "";

        for (int i = 0; i < line.length(); i++) {
            if (line.charAt(i) >= '0' && line.charAt(i) <= '9') {
                ret += line.charAt(i);
            } else if (line.charAt(i) >= 'A' && line.charAt(i) <= 'Z') {

                char c = line.charAt(i);

                if (c == 'A' || c == 'B' || c == 'C') {
                    ret += "2";
                } else if (c == 'D' || c == 'E' || c == 'F') {
                    ret += "3";
                } else if (c == 'G' || c == 'H' || c == 'I') {
                    ret += "4";
                } else if (c == 'J' || c == 'K' || c == 'L') {
                    ret += "5";
                } else if (c == 'M' || c == 'N' || c == 'O') {
                    ret += "6";
                } else if (c == 'P' || c == 'R' || c == 'S') {
                    ret += "7";
                } else if (c == 'T' || c == 'U' || c == 'V') {
                    ret += "8";
                } else if (c == 'W' || c == 'Y' || c == 'X') {
                    ret += "9";
                }
            }

        }

        return ret.substring(0, 3) + "-" + ret.substring(3);
    }

    public static void main(String[] args) throws Exception {

        Map<String, Integer> map = new HashMap<String, Integer>();

        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

        String line = stdin.readLine();

        int n = Integer.parseInt(line);

        for (int i = 0; i < n; i++) {
            line = stdin.readLine();

            String result = convert(line);

            if (map.get(result) == null) {
                map.put(result, 1);
            } else {
                int newValue = map.get(result) + 1;
                map.put(result, newValue);
            }
        }

        if (map.keySet().size() == n) {
            System.out.println("No duplicates.");
        } else {

            List<Count> list = new ArrayList<Count>();
            for (Map.Entry<String, Integer> entry : map.entrySet()) {
                if (entry.getValue() > 1) {

                    list.add(new Count(entry.getKey(), entry.getValue()));
                }
            }

            
            Collections.sort(list, new Comparator() {

                public int compare(Object arg0, Object arg1) {
                    Count c1 = (Count) arg0;
                    Count c2 = (Count) arg1;
                    
                   return c1.s.compareTo(c2.s);
                }
                
            });
            
            
            for (Count c: list) {
               System.out.println(c.s + " " +  c.number);
            }
        }

    }

    static class Count {

        String s;
        int number;

        public Count(String s, int number) {
            this.s = s;
            this.number = number;
        }
    }

}


> import java.util.Scanner;
> 
> 
> public class Main {
> 	
> 	private int n;
> 	private String[] result;
> 	private String[] input;;
> 	
> 	
> 	public String[] input() {
> 		Scanner in=new Scanner(System.in);
> 		n=Integer.parseInt(in.nextLine());
> 		input=new String[n];
> 		char[] single=new char[7];
> 		for(int i=0;i<n;i++){
> 			int au=0;
> 			String temp=in.nextLine();
> 			for(int j=0;j<temp.length();j++){
> 				int asc=temp.charAt(j);
> 				if(asc==81||asc==113){continue;}
> 				if(asc>=48&&asc<=57||asc>=65&&asc<90||asc>=97&&asc<122){
> 					if(asc>=97){
> 						asc=asc-32;
> 						System.out.println(asc);
> 						char a=this.mapping(asc);
> 						single[au++]=(char) a;
> 					}else{
> 						char a=this.mapping(asc);
> 						single[au++]=(char) a;
> 					}
> 				}else{
> 					continue;
> 				}
> 			}
> 			input[i]=new String(single);
> 		}
> 		return input;
> 	}
> 	
> 	public char mapping(int asc){
> 		char num='2';
> 		char cha='A'-1;
> 		char temp=(char) asc;
> 		for(int i=1;i<=25;i++){
> 			cha++;
> 			if(cha=='Q'){
> 				i--;
> 				continue;
> 			}
> 			if(temp==cha){
> 				temp=num;
> 				return temp;
> 			}
> 			if(i%3==0)num++;
> 		}
> 		return temp;
> 	}
> 	
> 	public String[] sort(String[] input){
> 		for(int i=0;i<input.length;i++){
> 			for(int j=i;j<input.length;j++){
> 				String t=null;
> 				if(Integer.parseInt(input[i])>Integer.parseInt(input[j])){
> 					t=input[i];
> 					input[i]=input[j];
> 					input[j]=t;
> 				}
> 			}
> 		}
> 		return input;
> 	}
> 	
> 	public String[] classify(String[] aaa){
> 		String[] result =new String[n];
> 		int numbers=1;
> 			for(int i=0;i<aaa.length-1;i++){
> 				if(aaa[i].equals(aaa[i+1])){
> 					numbers++;
> 					
> 					//result[i]=new String(aaa[i]+" "+numbers);
> 				}else{
> 					if(numbers!=1){
> 					result[i]=new String(aaa[i]+" "+numbers);
> 					numbers=1;
> 					}
> 				}								
> 			}
> 		return result;
> 		
> 	}
> 
> 	public boolean isallnull(String[] bb ){
> 		for(int i=0;i<bb.length;i++){
> 			if(bb[i]!=null)return false;
> 		}
> 		return true;
> 	}
> 	public static void main(String[] args){
> 		Main t=new Main();
> 		String[] input=t.input();
> 		input=t.sort(input);
> 		String[] result =t.classify(input);
> 		if(t.isallnull(result)){
> 			System.out.println("No duplicates");
> 		}else{
> 			for(int i=0;i<result.length;i++)
> 			{
> 				if(result[i]!=null){
> 					String str1=new String(result[i].substring(0, 3));
> 					String str2=new String(result[i].substring(3));
> 					result[i]=new String(str1+"-"+str2);
> 				System.out.println(result[i]);
> 				}
> 			}
> 		}
> 	}
> }
> 这个是我写的代码。才学编程没半年呢。程序写的很垃圾。高手指点下

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator