【发布时间】:2021-10-18 11:24:15
【问题描述】:
我正在开发一款游戏,我需要一种算法来查找使用最多字母的单词。
可以用这些字母构成的L,A,B,K,C,O,L,N,A,E单词
ABACK ABLE ACNE ALACK ALAN ALBA ALEC ALOE ALONE ANAL ANKLE BAAL BACK BACON BAKE BAKE BALANCE BALE BALK BALL BALLON BANAL BANCO BANE BANK BEACON BEAK BEAN BECK BECKON BELL BLACK BLACKEN BLANK BLACK BLOCK BLOKE BOCK BONE BONE CABAL CABLE CAKE CALL CANAL CELL CLAN CLANK CLEAN CLOAK CLONE COAL COLE COLE COLE CONE EBON ELAN KALE KANA KANE KENO KNELL KNOB KNOLL LABEL LACE LACK LAKE LANCE LANE LANK LEAK LEAL LEAN LOAN LOBE LOCA LOCAL LOCALE LOCK LONE NALA NECK NOBLE NOEL OAKEN OCEAN OLLA ONCE
我需要一种算法来找到使用大多数字母的单词组合。字母可以使用一次。 我可以用蛮力算法找到它我可以取出一个单词并尝试用我留下的字母找到另一个单词。但我想构建更优雅的算法。
public class FindBetsWords {
private static String wordsStr = "ABACK,ABAFT,ABATE,ABBA,ABBE,ABBOT,ABET,ABLAZE,ABLE,ABOUT,ACME,ACNE,ACTA,ACTUAL,ACUMEN,ACUTE,AFFABLE,AFFECT,AFLAME,AFLOAT,ALACK,ALAMO,ALAN,ALBA,ALBUM,ALBUMEN,ALEC,ALFA,ALLOT,ALMA,ALOE,ALOFT,ALONE,ALTO,ALUM,AMAZE,AMAZON,AMBLE,AMEN,AMOUNT,AMULET,ANAL,ANKLE,ANTE,ATOLL,ATOM,ATONE,AUNT,AUTO,BAAL,BABA,BABE,BABEL,BABU,BACK,BACON,BAFFLE,BAKE,BALANCE,BALBOA,BALE,BALEFUL,BALK,BALL,BALLET,BALLON,BALLOT,BALM,BANAL,BANCO,BANE,BANEFUL,BANK,BANTAM,BATE,BATEAU,BATMAN,BATON,BAUBLE,BEACON,BEAK,BEAM,BEAN,BEAT,BEAU,BECK,BECKON,BEFALL,BELL,BELT,BEMOAN,BENT,BETA,BLAB,BLACK,BLACKEN,BLAME,BLANK,BLANKET,BLAZE,BLAZON,BLEAK,BLEAT,BLENT,BLOC,BLOCK,BLOKE,BLOT,BLUE,BLUFF,BLUME,BLUNT,BOAT,BOATMAN,BOATMEN,BOCK,BOLE,BOLT,BOMB,BONE,BOULE,BOUNCE,BOUT,BUCK,BUCKET,BUCKLE,BUFF,BUFFALO,BUFFET,BULB,BULK,BULL,BULLET,BULLOCK,BUMBLE,BUNK,BUNT,BUTE,CABAL,CABLE,CABMAN,CABMEN,CAFE,CAKE,CALF,CALL,CALM,CALOMEL,CAME,CAMEL,CAMEO,CANAL,CANE,CANOE,CANT,CANTO,CATE,CELL,CELLO,CELT,CENT,CENTO,CENTUM,CLAM,CLAN,CLANK,CLEAN,CLEF,CLEFT,CLOAK,CLOMB,CLONE,CLOT,CLOUT,CLUB,CLUE,COAL,COAT,COBALT,COBB,COFFLE,COKE,COLA,COLE,COLLET,COLT,COLUMN,COMA,COMB,COMBAT,COMBE,COME,COMET,COMTE,CONE,CONFUTE,CONTE,COTE,COUNT,COZEN,CUBE,CUFF,CULL,CULT,CUTE,EBON,ECLAT,ELAN,ENACT,ETNA,FABLE,FACE,FACT,FACTUAL,FAKE,FALCON,FALL,FALLEN,FAME,FANE,FATAL,FATE,FATEFUL,FAUCET,FAULT,FAUN,FAUNA,FEAT,FELL,FELLA,FELON,FELT,FETAL,FLACK,FLACON,FLAKE,FLAM,FLAME,FLANK,FLAT,FLAUNT,FLEA,FLECK,FLOAT,FLOCK,FLOE,FLOUNCE,FLOUT,FLUE,FLUENT,FLUKE,FLUME,FLUTE,FOAL,FOAM,FOCAL,FOEMAN,FOLK,FOMENT,FONT,FOUL,FOUNT,FUEL,FULL,FUMBLE,FUME,FUNK,KALE,KANA,KANE,KATA,KENO,KENT,KNACK,KNELL,KNELT,KNOB,KNOCK,KNOLL,KNOT,KNOUT,KNUCKLE,LABEL,LACE,LACK,LACUNA,LAKE,LAMA,LAMB,LAMBENT,LAME,LAMENT,LANCE,LANCET,LANE,LANK,LATE,LATEN,LEAF,LEAK,LEAL,LEAN,LEANT,LEFT,LEMAN,LEMON,LENT,LENTO,LLAMA,LOAF,LOAM,LOAN,LOBE,LOCA,LOCAL,LOCALE,LOCATE,LOCK,LOCKET,LOCUM,LOFT,LONE,LOUT,LUCE,LUCENT,LUCK,LUMEN,LUNA,LUNE,LUTE,MACE,MACK,MACON,MAKE,MALE,MALL,MALLET,MALT,MANA,MANE,MANFUL,MANO,MANTEAU,MANTEL,MANTLE,MANTUA,MANUAL,MATE,MAUL,MAUN,MAZE,MEAL,MEAN,MEANT,MEAT,MELL,MELON,MELT,MELTON,MENO,MENTAL,MENU,META,METAL,MOAN,MOAT,MOCK,MOLE,MOLL,MOLTEN,MONK,MONTE,MOTE,MOTEL,MOUE,MOULT,MOUNT,MUCK,MUCKLE,MUFF,MUFFLE,MULE,MULL,MULLET,MUTABLE,MUTE,NABOB,NALA,NAME,NATAL,NEAT,NEBULA,NECK,NOBLE,NOEL,NOME,NOTA,NOTABLE,NOTE,NUKE,NULL,NUMB,OAKEN,OAKUM,OATEN,OATMEAL,OCEAN,OFFAL,OFTEN,OLLA,OMEN,ONCE,OUNCE,OUTBACK,TABLE,TABLEAU,TABU,TACK,TACKLE,TACO,TAKE,TAKEN,TALA,TALE,TALK,TALL,TALON,TAME,TANK,TEAK,TEAL,TEAM,TELA,TELAMON,TELCO,TELL,TOKEN,TOLE,TOLL,TOMB,TOME,TONE,TUBAL,TUBE,TUCK,TUFA,TULE,TULLE,TUMBLE,TUNA,TUNE,UNABLE,UNCLE,UNCO,UNFELT,UNLOCK,UNMAKE,UNTO,ZEAL,ZEALOT,ZETA,ZONE";
public static void main(String[] args) {
String availableLetters = "LABKCOLNAEMFKUTFZB";
char[] availableLettersCharArr = availableLetters.toCharArray();
String[] words = wordsStr.split(",");
}
}
【问题讨论】:
-
如果你想看看我会在哪里使用这个算法,你可以从 google play 下载 zade games kelime101。
-
例如,如果算法选择了球和痤疮,则有 C ,剩下 O
-
它可以选择 BANK 和 LOCAL 只剩下字母 E 你可以用这些词来测试你的算法。我可以得到可用的单词,我们可以用我拥有的字母构建,但算法应该选择单词,所以应该保留更少的字母
-
如果需要 cmets 来描述问题,编辑问题并将其添加到问题中会很有用。
-
你有可用的构造词列表吗?还是您正在构建所有可能的组合,然后对照字典检查有效单词?
标签: algorithm