Editorial for Piramida


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence.

Analiza

Lako se zaključuje da se problem svodi na utvrđivanje da li par uzastopnih stringova mogu biti uzastopni redovi piramide. Provera da li dva stringa mogu biti uzastopni redovi se svodi na utvrđivanje broja pojavljivanja pojedinih slova engleskog alfabeta (nad kojim su stringovi napisani). Ako sa n_x[A], n_x[B], n_x[C], ..., n_x[Z] označimo broj pojavljivanja, redom, slova A, B, C, ..., Z u stringu x, a sa n_y[A], n_y[B], n_y[C], ..., n_y[Z] označimo broj pojavljivanja, redom, slova A, B, C, ..., Z u stringu y, onda stringovi x i y mogu biti uzastopni redovi piramide ako i samo ako važi \(None\) |n_y[A]-n_x[A]| + |n_y[B]-n_x[B]| + |n_y[C]-n_x[C]+...+|n_y[Z]-n_x[Z]| = 1. \(None\)

Smernice za algoritam

Implementacija se svodi na proveru da li parovi uzastopnih stringova mogu biti redovi piramide. A ta provera se svodi na određivanje broja pojavljivanja pojedinih slova u ta dva stringa. Prebrajanje se može izvesti jednim prolazom kroz odgovarajući string. Postupak se prekida u trenutku kada se stigne do para uzastopnih stringova koji ne mogu biti uzastopni redovi piramide ili kada se stigne do poslednjeg para stringova.


Comments

There are no comments at the moment.