2013-10-27 1 views
1

이것은 poj 문제입니다. http://poj.org/problem?id=2136 저는 쉽게 이해할 수 있지만 어떻게 든 온라인 판단은 샘플 입력을 위해 저에게 효과가있는 것으로 보이지만 내 솔루션을 수락하지 않습니다. 그것은 "잘못된 해결책"이라고 말합니다. 질문에 언급 된 바와 같이 여분의 공백이나 여분의 줄이 없는지 확인했습니다. 누군가 내가 잘못 가고 있다는 것을 지적 해 주실 수 있습니까?POJ 2136 Vertical Histogram

import java.util.Iterator; 
import java.util.Scanner; 
import java.util.TreeMap; 
public class poj2136 { 

public static void main(String[] args) 
{ 
    // TODO Auto-generated method stub 

    Scanner sc = new Scanner(System.in); 
    int counter = 0; 
    TreeMap<Character,Integer> hm_frequency = new TreeMap<Character,Integer>(); 
    while(counter<4) 
    { 
     String line = sc.nextLine(); 
     String words[] = line.split(" "); 
     for(String word: words) 
     { 
      //System.out.println(word); 
      for(int i=0; i<word.length();i++) 
      { 
       char key = word.charAt(i); 
       if((int)key>64 && (int)key<91) 
       { 
        if(hm_frequency.containsKey(key)) 
        { 
         hm_frequency.put(key,hm_frequency.get(key)+1); 
        } 
        else 
        { 
         hm_frequency.put(key,1); 
        } 
       } 
      } 

     } 
     counter++; 
    } 

    while(true) 
    {   
     int max_value = maxvalue(hm_frequency); 
     char ch = maximumchar(hm_frequency, max_value); 
     if(max_value == 0) 
     { 
      break; 
     } 
     Iterator iter = hm_frequency.keySet().iterator(); 
     int stop_flag = 0; 
     while(iter.hasNext() && stop_flag==0) 
     { 
      char key = (Character) iter.next(); 
      if (key== ch) 
      { 
       stop_flag = 1; 
      } 
      if(hm_frequency.get(key)== max_value) 
      { 
       hm_frequency.put(key, max_value-1); 
       if(stop_flag == 0) 
       System.out.print("* "); 
       else 
       System.out.print("*"); 
      } 
      else 
      { 
       if(stop_flag == 0) 
       System.out.print(" "); 
       else 
       System.out.print(" "); 
      } 
     } 

     System.out.println(); 
    }  
    Iterator iter = hm_frequency.keySet().iterator(); 
    while(iter.hasNext()) 
    { 
     char key = (Character) iter.next(); 
     if(iter.hasNext()) 
     System.out.print(key+" "); 
     else 
     System.out.print(key); 
    } 
} 

public static char maximumchar(TreeMap<Character,Integer> hm_frequency, int max_value) 
{ 
    Iterator iter = hm_frequency.keySet().iterator(); 
    char ch = '.'; 
    while(iter.hasNext()) 
    { 
     char key = (Character) iter.next(); 
     int value = hm_frequency.get(key); 
     if(value==max_value) 
     { 
      ch = key; 
     } 
    } 
    return ch; 
} 

public static int maxvalue(TreeMap<Character,Integer> hm_frequency) 
{ 
    Iterator iter = hm_frequency.keySet().iterator(); 
    int max = 0; 
    while(iter.hasNext()) 
    { 
     char key = (Character) iter.next(); 
     int value = hm_frequency.get(key); 
     if(value>max) 
     { 
      max = value; 
     } 
    } 
    return max; 
} 

} 

답변

2

당신은 출력 전체 알파벳을해야하고, 당신이 당신의 텍스트 문자 만 인쇄되어 있음을 가리키는에 대한 공백으로 구분하여 대문자 알파벳

+0

감사합니다 아웃. 저를 평생에 걸릴 것입니다. – Prateek

+0

그래, 때로는 문제에 대한 새로운 모습이 해결사가 될 수 있습니다. –