Vos conditions n'exigent pas que la prochaine église pour un pasteur donné soit choisie au hasard. Ne pourriez-vous pas parcourir la liste de l'église? En d'autres termes, affectez à chaque pasteur un nombre de 0 à 12. Attribuez un numéro à chaque église, 0-12. Le premier mois:
Mois 0:
pasteur-0 -> église 0
pasteur-1 -> église-1
pasteur-2 -> église 2
.. .
pasteur-n -> église n
Le mois prochain, incrémenter seulement l'un des compteurs (avec wrap-around)
Mois 1:
pasteur-0 -> église-1
pasteur-1 -> église-2
pasteur-2 -> église 3
...
pasteur-n - > église-0
répéter ensuite pour les mois restants:
mois 3:
pasteur-0 -> église-2
pasteur-1 -> église-3
pasteur-2 -> église-4
... pastor- (n-1) -> église-0
pasteur-n -> église-1
Il y a une très simple boucle à tout cela (O (n)). Si cela vous déroute, je suggère d'essayer la boucle sur papier avec say n = 3.
Si le caractère aléatoire est une exigence, veuillez mettre à jour votre question.
EDIT PAR PAX
Je supprimer ma réponse et en votant celui-ci puisqu'il est O (n) et l'expansion de la mine pour répondre aux modifications aurait été au moins O (n^2) .
Vous pouvez toujours avoir hasard en faisant le pasteur-0 par le pasteur-N indices de valeurs dans un tableau de pasteurs qui a été triés au hasard pour que cette solution fait au moins aussi bonne que la mienne.
FIN EDIT PAX
Est-ce que ce sont les devoirs? Si oui, veuillez utiliser l'étiquette de devoirs. –
ce n'est pas les devoirs, quelqu'un m'a demandé de le faire – ferdinand
Était-ce quelqu'un un conférencier CS? –