Buongiorno, in c++
in pratica ho questo esercizio:
ho il seguente input:
Esempio input
assembly line 1
4 1
pa -> [p1 pc]
pb -> []
pc -> [p1]
p1 -> [pb]
assembly line 2
4 2
q -> [x]
c -> [x]
x -> []
d -> [c q]
-1
e dovrei implementare:
un programma che riesca a disporre tutti i pezzi sulle celle in modo ottimale e, soprattutto,
che riesca a stimare il tempo minimo totale necessario a ricostruire la nave, per poter
organizzare opportunamente la resistenza.
Siano quindi
- P = { p1, …, pn } un insieme in cui ogni elemento è un pezzo,
- per ogni p in P, sia D(p) = { pi | pi è un pezzo in P } l’insieme delle dipendenze del pezzo p.
Implementare un programma che pianifichi la catena di montaggio C = [ c1, …, cm ] facendo
riferimento alle seguenti regole:
- un pezzo pi può essere inserito nella cella ck della catena se e solo se tutti i pezzi ps in D(pi)
sono presenti nella catena in qualche cella cq con q < k,
- una cella può contenere uno o più pezzi (per un massimo di x pezzi) e i pezzi nella stessa
cella non devono essere dipendenti tra di loro,
- la catena deve utilizzare tutti i pezzi presenti in P,
- la lunghezza totale della catena (cioè il numero m di celle adoperate) deve essere il minimo.
Si può assumere che non esistano dipendenze cicliche tra i pezzi.
Inoltre, è noto che in P esiste esattamente un pezzo che non dipende da nessuno (pezzo
iniziale) ed esattamente un pezzo che non è necessario a nessun altro (pezzo finale).
l'output è questo:
Esempio output
result 1
4
result 2
3
a quanto ho capito nel esercizio dovrei fare una lista concatenata per ogni stringa, quindi per cominciare dovrei leggere la prima stringa :
pa -> [p1, pc] e metterlo in una lista ma come faccio a prendermi i pezzi ignorando i caratteri ->,[,]? come posso fare per parzerizzare?
e come posso impostare il problema?
grazie