Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Arrays;
- import java.util.LinkedHashSet;
- /*
- * Anagram problem
- * http://uva.onlinejudge.org/external/1/195.html
- * it's the basis idea of permutation problem
- * using backtracking algorithm
- */
- public class Anagram {
- public static void main(String[] args) {
- run();
- }
- private static void run() {
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(
- System.in));
- int count = Integer.parseInt(br.readLine());
- for (int i = 0; i < count; i++) {
- char[] arr = br.readLine().toCharArray();
- Arrays.sort(arr);
- boolean[] visited = new boolean[arr.length];
- char[] out = new char[arr.length];
- LinkedHashSet<String> set = new LinkedHashSet<String>();
- permute(arr, visited, out, set, 0);
- for (Object object : set) {
- System.out.println(object);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private static void permute(char[] arr, boolean[] visited, char[] out,
- LinkedHashSet<String> set, int i) {
- if (i == arr.length) {
- if (!set.contains(new String(out))) {
- set.add(new String(out));
- }
- } else {
- for (int j = 0; j < arr.length; j++) {
- if (!visited[j]) {
- visited[j] = true;
- out[i] = arr[j];
- permute(arr, visited, out, set, i + 1);
- visited[j] = false;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement