Prima di scrivere qualcosa per il problema, ho bisogno di farvi sapere:Algoritmo per cruciverba con data grid
- questo problema è il mio dovere (avevo circa 1 settimana per tornare programma di lavoro)
- Stavo lavorando a questo problema per circa una settimana, ogni giorno, cercando di capire la mia soluzione
- Non sto chiedendo il programma completo; Ho bisogno un'idea generale sull'algoritmo
Problema:
Dato: un dizionario e di una "griglia", ad esempio:
griglia (X qualsiasi lettera):
X X
XXXX
X X
XXXX
lista di parole:
ccaa
baca
baaa
bbbb
Devi trovare l'esempio "soluzione" - è possibile inserire parole dalla lista di parole in una griglia data? Se esiste almeno una soluzione, stampane una (a seconda di quale è corretta). Se no - stampa messaggio, che non vi è alcuna soluzione possibile. Ad esempio dato, c'è una soluzione:
b c
baca
b a
baaa
E 'difficile per me di scrivere tutto quello che ho già provato (perché l'inglese non è la mia lingua madre e ho anche un sacco di carte con sbagliate idee).
mio ingenuo algoritmo funziona in questo modo:
Primo canale ha bisogno di lunghezza appena adeguata, in modo da trovare qualsiasi (prima?) Parola con corretta lunghezza (ho intenzione di usare dato esempio griglia e vocabolario per dimostrare quello credo):
c X cXXX a X aXXX
per prima comune lettera (all'incrocio di 2 word s) trova una qualsiasi (prima) parola, che si adatti alla griglia (quindi, avere la lunghezza corretta e comune lettera sulla posizione corretta). Se non ci sono tali parole, tornare a (1) e prendere un'altra prima parola. Nell'esempio originale non c'è una parola che inizia con "c", quindi torniamo a (1) e selezioniamo le parole successive (questo passaggio si ripete alcune volte finché non abbiamo "bbbb" per la 1a parola). Ora abbiamo:
b X bXXX b X bXXX
E stiamo cercando una parola (s), che inizia con "b", per esempio:
b X baca b X bXXX
processo generale: cercare di trovare coppie di parole che misura alla griglia data. Se non ci sono tali parole, tornare al passaggio precedente e utilizzare un'altra combinazione - se non esiste tale - non c'è soluzione.
Tutto sopra è caotico, spero che tu capisca almeno la descrizione del problema.Ho scritto una bozza di un algoritmo, ma non sono sicuro che funzioni e come codificarlo correttamente (nel mio caso: C++). Inoltre, ci sono casi (anche nell'esempio sopra) che dobbiamo trovare una parola che dipenda da su 2 o più altre parole.
Forse non riesco a vedere qualcosa di ovvio, forse sono troppo stupido, forse ... Beh, ho davvero provato a risolvere questo problema. Non conosco abbastanza bene l'inglese per descrivere con precisione cosa penso di questo problema, quindi non posso mettere qui tutti i miei appunti (ho cercato di descrivere un'idea ed è stato difficile). Credi o no, ho passato molte lunghe ore cercando di capire la soluzione e non ho quasi nulla ...
Se puoi descrivere una soluzione, o dare un suggerimento su come risolvere questo problema, apprezzerei molto questo .
Sono i 'X's nella griglia gli stessi personaggi? cioè se 'X' è 'a' allora tutto' X' deve essere 'a'? – rendon
No, 'X' significa qualsiasi lettera, è lì per mostrare come appare la griglia ("modello") di un cruciverba. E questi personaggi non hanno bisogno di essere gli stessi. – exTyn
Puoi aggiungere un caso in cui non esiste una soluzione? – rendon