cs_cobol60
Messages postés2Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention27 février 2008 27 févr. 2008 à 16:16
Bonjour, si cela intéresse quelqu'un j'ai écrit un algorithme qui trouve une solution pour n=100 en une dizaine de seconde. L'algorithme n'utilise pas la méthode décrite dans wikipedia :
Il existe un algorithme simple retournant une solution simple pour n dames si n 1 ou n 4:
Diviser n par 12. Se rappeler du reste (c'est 8 pour le problème des huit dames).
Écrire dans l'ordre la liste des nombres pairs de 2 à n.
Si le reste est 3 ou 9, mettre 2 à la fin de la liste.
Écrire dans l'ordre les nombres impairs de 1 à n, mais, si le reste est 8, permuter les deux à deux (ie 3, 1, 7, 5, 11, 9, …).
Si le reste est 2, permuter les places de 1 et 3, puis mettre 5 à la fin de la liste.
Si le reste est 3 ou 9, mettre 1 et 3 à la fin de la liste.
Placer la reine de la première colonne dans la ligne avec le premier nombre de la liste, placer la reine de la seconde colonne dans la ligne avec le deuxième nombre de la liste, etc.
car cet algorithme est trop simple et suppose que l'on connaisse la solution avant d'écrire l'algorithme
De plus il ne fonctionne pas si l'on change légèrement les règles échiquéenne ...
The_Void
Messages postés4Date d'inscriptiondimanche 24 décembre 2006StatutMembreDernière intervention14 janvier 2007 26 déc. 2006 à 21:20
Merci pour ton commentaire :)
J'utilise dev-c++, et aparament j'ai mis toutes les options susceptibles de diminuer la taille...
J'ai essayé de viré l'en tête iostream pour mettre stdio.h et la comme par magie mon exe passe de 260 ko à... 5,5ko!
C'est pas très normal ça, si? ^^
Sinon pour le system tu as raison faut vraiment que je perde l'habitude de l'utiliser lol
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 26 déc. 2006 à 16:19
Alors:
pour la taille de l'exec, l'idée est d'enlever les symboles de débug lors de la compilation, tu utilises quel IDE ?
Clock est peu précis, mais bon vu l'utilisation que tu en fais on va dire que c'est pas bein grave :)
Ne pas utiliser system c'est pas portable
Tu devrais expliquer un peu plus le if(posDames[j]==i || ( abs(posDames[j]-i) == abs(j-nDames))) j'ai mis un peu de temps à comprendre ^^
7/10, je pense :) (surtout pour une 1ère source )
++
1 févr. 2018 à 09:50
23 avril 2011 à 18:31
8 avril 2008 à 22:07
if(posDames[j]==i || ( abs(posDames[j]-i) == abs(j-nDames)))
27 févr. 2008 à 16:16
Il existe un algorithme simple retournant une solution simple pour n dames si n 1 ou n 4:
Diviser n par 12. Se rappeler du reste (c'est 8 pour le problème des huit dames).
Écrire dans l'ordre la liste des nombres pairs de 2 à n.
Si le reste est 3 ou 9, mettre 2 à la fin de la liste.
Écrire dans l'ordre les nombres impairs de 1 à n, mais, si le reste est 8, permuter les deux à deux (ie 3, 1, 7, 5, 11, 9, …).
Si le reste est 2, permuter les places de 1 et 3, puis mettre 5 à la fin de la liste.
Si le reste est 3 ou 9, mettre 1 et 3 à la fin de la liste.
Placer la reine de la première colonne dans la ligne avec le premier nombre de la liste, placer la reine de la seconde colonne dans la ligne avec le deuxième nombre de la liste, etc.
car cet algorithme est trop simple et suppose que l'on connaisse la solution avant d'écrire l'algorithme
De plus il ne fonctionne pas si l'on change légèrement les règles échiquéenne ...
26 déc. 2006 à 21:20
J'utilise dev-c++, et aparament j'ai mis toutes les options susceptibles de diminuer la taille...
J'ai essayé de viré l'en tête iostream pour mettre stdio.h et la comme par magie mon exe passe de 260 ko à... 5,5ko!
C'est pas très normal ça, si? ^^
Sinon pour le system tu as raison faut vraiment que je perde l'habitude de l'utiliser lol
26 déc. 2006 à 16:19
pour la taille de l'exec, l'idée est d'enlever les symboles de débug lors de la compilation, tu utilises quel IDE ?
Clock est peu précis, mais bon vu l'utilisation que tu en fais on va dire que c'est pas bein grave :)
Ne pas utiliser system c'est pas portable
Tu devrais expliquer un peu plus le if(posDames[j]==i || ( abs(posDames[j]-i) == abs(j-nDames))) j'ai mis un peu de temps à comprendre ^^
7/10, je pense :) (surtout pour une 1ère source )
++