2014-09-12

10420 - List of Conquests




題目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1361

這題很麻煩,可能是我寫法不好orz....

import java.util.*;
import java.lang.*;


public class Main{
 
 static String[] data = new String[2000];
 static String[] country = new String[2000];
 static int[] total = new int[2000];
 static int index=-1;
 static int num=index+1;
 static boolean change=false;
 public  static void main(String[] args) {
  Scanner k = new Scanner(System.in);
  
  int n = k.nextInt();
  k.nextLine();
    
  while(n--!=0){
   insert(k.nextLine());//一次讀入國別+姓名
   
  }
 
  sort();
  print();
 }
 public static void insert(String Data){

  boolean finded=false;
  if(index==-1){//第一次就進入,為了解決nullpointer(runtimeError)問題,因為陣列裡都還沒有資料
   finded=true;
   index++;
   data[index]=Data;  
   country[index]=Data.split(" ")[0];
   total[index]++;
   num++;
  } 
  else{
   for(int i=0 ; i<num ;i++){//找有沒有重複的輸入資料(國別+姓名)
    if(data[i].equals(Data)){
     finded=true;
     break;
    }
    
   }
  }
  if(!finded){//如果都沒有重複就進入紀錄程序
   boolean newIn = true;//是否要新增國家
   for(int i=0 ; i<num ;i++){//找到同個國別就+1總人數,且不打算新增國別
    if(country[i].equals(Data.split(" ")[0])){
     
     newIn=false;
     total[i]++;
    }
   }
   if(newIn){//如果找不到同個國別就新增一筆國別+總人數
    index++;
    data[index]=Data;   
    country[index]=Data.split(" ")[0];
    total[index]++;  
    num++;
   }
  }
 }
 
 public static void sort(){//根據字母順序排列國家
  
  for(int i=0 ; i<num ;i++){
   for(int j=i+1 ; j<num ;j++){
    get(country[i],country[j],0);
    if(change){
     String tempCountry=country[i];
     country[i]=country[j];
     country[j]=tempCountry;
     
     int tempTotal=total[i];
     total[i]=total[j];
     total[j]=tempTotal;
    }
   }
  }
 }
 
 public static void print(){//將結果印出來
  for(int i=0 ; i<num ;i++){
   //if(i==num-1)
    //System.out.print(country[i]+" "+total[i]);
   //else
   System.out.println(country[i]+" "+total[i]);
  }
 }
 public static void get(String a , String b,int index){//遞迴依序比較字元ASCII碼大小
  if((int)a.charAt(index)==(int)b.charAt(index)){
  
         get(a,b,++index);
  }
  else if((int)a.charAt(index)>(int)b.charAt(index)){
   change=true;  
  }
  else
   change=false;
  
 }
}


沒有留言:

張貼留言

(VM) Ubuntu enable ssh

OS版本:14.04 LTS 相關指令: sudo apt-get install openssh-server Port forwarding設定 : 以virtual box為例子,網路->進階->連接阜轉送(port forwarding)