Giusto scusami. Praticamente cont contiene il numero progressivo di piastrelle larghe 2. Quindi ad ogni passo del ciclo (il quale durerà fino a quando le piastrelle larghe 2 non saranno la metà di N) riempio il vettore con (N-cont*2) x 1 e cont x 2, ne analizzo tutte le permutazioni e le stampo. Con input di esempio e altri di prova funziona. Sul correttore invece mi prende il primo subtask e tutti quelli del secondo tranne uno. Poi nessuno di tutti gli altri.
Non che sia strettamente necessaria eh! Puoi ad esempio aggiungere tutte le piastrellature in un vettore (invece di stamparle direttamente). Lo ordini. Lo stampi tutto
Nel caso prova a risolverlo in entrambi i modi e vedi quale va più veloce (beh… :P)
Uhm… tecnicamente potresti tenerle come stringhe e ordinare l’array di stringhe (vector<string>) l’unico problema è che i separatori ‘[’ e ‘]’ hanno un valore ASCII maggiore di ‘0’. Potresti sostituirli con ‘(’ e ‘)’, ordinare l’array, stamparlo ri-sostituendo le parentesi…
Oppure puoi usare un vettore di interi (1 e 2) e quando stampi sostituisci 1 con [O] e 2 con [OOOO]
Degiac
Sì ma dovresti comunqe sapere «come ordinare le sequenze» (ad esempio passando a sort una funzione di compare, oppure definendo un operatore "minore" tra i vector). Con le stringhe chiamerebbe solo sort (non che io consigli di farlo... è bruttissimo :P... molto meglio ordinare i vector in questo caso)
Ordinando il vector di vector da 100/100, grazie ;)
Lawliet
Tra l’altro ho notato che nella tua ultima sottoposizione per ordinare il vector<vector> passi una funzione di compare, questo non è strettamente necessario (come ho scritto in un commento poco sopra) dal momento che la classe vector ha gli operatori di confronto già definiti (<, <=, >, etc…) quindi se hai due vector v1 e v2 e fai la cosa seguente:
if (v1 < v2) { … }
automaticamente verrà fatta la cosa giusta (internamente, verrà chiamata lexicographical_compare). Quindi puoi fare sort senza passare alcuna funzione di compare
Ordinando il vector di vector da 100/100, grazie ;)
Lawliet
Tra l’altro ho notato che nella tua ultima sottoposizione per ordinare il vector<vector> passi una funzione di compare, questo non è strettamente necessario (come ho scritto in un commento poco sopra) dal momento che la classe vector ha gli operatori di confronto già definiti (<, <=, >, etc…) quindi se hai due vector v1 e v2 e fai la cosa seguente:
if (v1 < v2) { … }
automaticamente verrà fatta la cosa giusta (internamente, verrà chiamata lexicographical_compare). Quindi puoi fare sort senza passare alcuna funzione di compare
wil93
Capito
Grazie per la disponibilità. Quando avrò un po’ di tempo implementerò la funzione ricorsivamente!