Unique25
unknown
java
a year ago
1.7 kB
8
Indexable
package random; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class Unique25 { private static Map<String, Boolean> provided; private static boolean findUnique25(int i, int mask, String curWord, boolean[][] memo){ if(i > 0 && i%5 == 0){ if(provided.containsKey(curWord)){ System.out.println(curWord + " " + i); provided.put(curWord, true); if(i == 25) return true; }else return false; } if(memo[i][mask]) return false; for(int k=0; k<26; k++){ if((mask & (1 << k)) == 0){ if(findUnique25(i+1, mask|(1<<k), i%5 == 0 ? ""+(char)('a' + k): curWord+(char)('a' + k), memo)){ return true; } } } if(i%5 == 0){ provided.put(curWord, false); } memo[i][mask] = true; return false; } public static void main(String[] args) { //String[] words= {"abcde", "fghij", "klmno", "pqrst", "uvwxy", "zabcd", "apple", "zebra", "ocean", "quick", "world", "jumps", "foxes", "liver"}; //String[] words= {"abcde", "fghij", "fghij", "fghij", "fghij", "fghij", "fghij"}; String[] words= {"abcde", "fghij", "fklmn", "gopqr", "hstuv", "iwxyz"}; provided = new HashMap(); for(String word: words) provided.put(word, false); boolean[][] memo = new boolean[25][(1 << 26)-1]; findUnique25(0, 0, "", memo); for(Map.Entry<String, Boolean> e: provided.entrySet()) if(e.getValue()) System.out.println(e.getKey()); } }
Editor is loading...
Leave a Comment