Advertisement
Guest User

Untitled

a guest
Jul 26th, 2012
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.43 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;
  5. import java.util.LinkedHashSet;
  6.  
  7. /*
  8.  * Anagram problem
  9.  * http://uva.onlinejudge.org/external/1/195.html
  10.  * it's the basis idea of permutation problem
  11.  * using backtracking algorithm
  12.  */
  13. public class Anagram {
  14.  
  15.     public static void main(String[] args) {
  16.         run();
  17.     }
  18.  
  19.     private static void run() {
  20.         try {
  21.             BufferedReader br = new BufferedReader(new InputStreamReader(
  22.                     System.in));
  23.             int count = Integer.parseInt(br.readLine());
  24.  
  25.             for (int i = 0; i < count; i++) {
  26.                 char[] arr = br.readLine().toCharArray();
  27.                 Arrays.sort(arr);
  28.                 boolean[] visited = new boolean[arr.length];
  29.                 char[] out = new char[arr.length];
  30.                 LinkedHashSet<String> set = new LinkedHashSet<String>();
  31.                 permute(arr, visited, out, set, 0);
  32.                 for (Object object : set) {
  33.                     System.out.println(object);
  34.                 }
  35.             }
  36.  
  37.         } catch (IOException e) {
  38.             e.printStackTrace();
  39.         }
  40.     }
  41.  
  42.     private static void permute(char[] arr, boolean[] visited, char[] out,
  43.             LinkedHashSet<String> set, int i) {
  44.         if (i == arr.length) {
  45.             if (!set.contains(new String(out))) {
  46.                 set.add(new String(out));
  47.             }
  48.         } else {
  49.             for (int j = 0; j < arr.length; j++) {
  50.                 if (!visited[j]) {
  51.                     visited[j] = true;
  52.                     out[i] = arr[j];
  53.                     permute(arr, visited, out, set, i + 1);
  54.                     visited[j] = false;
  55.                 }
  56.             }
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement