000
08.12.2004, 22:30 Uhr
~Asterix4
Gast
|
Hi,
ich habe ein Array int a[M], dass die Werte -1 bis N annehmen kann. Ich durchlaufe das Array per Schleife und ich würde gern in jedem Arraydurchlauf jedes a[i], falls a[i] != -1, um genau a[i] Felder weiterrücken lassen, so dass es zu a[i+a[i]] wird, es sei denn, i+a[i] >= N, dann rutscht der Wert vorne wieder in das Array rein (wird also zu a[i+a[i]-N]). Die Randbedingungen bei dem Problem sind folgende. Ein Feld mit a[i] > 0 darf zwar a[i] Felder vorrücken, aber nur dann, wenn es dabei kein anderes a[j] >= 0 überspringt; wenn es sagen wir 3 Felder zum nächsten a[j] != -1 ist, und a[i] = 27, dann verschiebt man a[i] trotzdem um drei Felder, und weist ihm den wert 3 zu ... verständlich, bisher?
ich weiss nicht, wie man so etwas schön implementieren kann. Die realität, die dieses Programm simulieren soll (es geht da um ein biologisches problem), funktioniert synchron, aber ich weiß nicht, wie ich das schlau synchron implementieren kann. bisher suche ich mir ein Feld, dass ziehen kann, und gehe dann gegen den Uhrzeigersinn vor, und verschiebe weiter. Geht das auch irgendwie schlauer (mit hilfe von speziellen superinformatikalgos, zum Beispiel?).
Jemand ne idee?
Grüsse (nehmt euch davon, so viel ihr wollt :-)) |