Algorithme Combinaison
robinho10
-
Pseudo -
Pseudo -
Bonjour, je suis étudiant en première année de génie informatique et je suis coincé à trouver un solution à un algorithme ... L'exercice est le suivant :
Donnez un algorithme qui lis au clavier 21 nombres de 1 à 21 dans un tableau et qui nous permet de trouver toute les combinaisons possibles de 8 numéro existants dans ce tableau ...
ce qui veux dire par exemple pour 4 nombres allant de {1, 2, 3, 4} avec un choix de 2 numéros l'algorithme dois trouver comme résultats :
1 , 2
1 , 3
1 , 4
2 , 3
2 , 4
3 , 4
Le problème c'est comment faire comme cet exemple pour 21 numéros et un choix de 8 numéros et les afficher par la suite ...
Toutes propositions de solution est la bienvenue
Merci a vous tous d'avance ^^
Donnez un algorithme qui lis au clavier 21 nombres de 1 à 21 dans un tableau et qui nous permet de trouver toute les combinaisons possibles de 8 numéro existants dans ce tableau ...
ce qui veux dire par exemple pour 4 nombres allant de {1, 2, 3, 4} avec un choix de 2 numéros l'algorithme dois trouver comme résultats :
1 , 2
1 , 3
1 , 4
2 , 3
2 , 4
3 , 4
Le problème c'est comment faire comme cet exemple pour 21 numéros et un choix de 8 numéros et les afficher par la suite ...
Toutes propositions de solution est la bienvenue
Merci a vous tous d'avance ^^
A voir également:
- Algorithme code 4 chiffres
- +33 4 24 47 31 44 ✓ - Forum Mobile
- Code ascii - Guide
- Code gta 4 ps4 - Guide
- Tous les code possible de 0 à 9 (4 chiffres ) liste - Forum Programmation
- Tous les code possible de 0 à 9 (4 chiffres ) - Forum Jeux vidéo
2 réponses
Il faut utiliser une prog récursive et enlever les éléments une fois utilisés
en java ça donne ça
en java ça donne ça
public static void main(String[] args) { ArrayList<Integer> nombres = new ArrayList<Integer>(); for (int i = 0; i < 20; i++) { nombres.add(i); } List<List<Integer>> etablirCombinaison = etablirCombinaison(nombres, 8); for (List<Integer> combinaison : etablirCombinaison) { for (Integer i : combinaison) { System.out.print(i + " "); } System.out.println(); } } private static List<List<Integer>> etablirCombinaison(ArrayList<Integer> nombres, int nb) { List<List<Integer>> combinaisons = new LinkedList<List<Integer>>(); if (nb > 0) { ListIterator<Integer> listIterator = nombres.listIterator(); while (listIterator.hasNext()) { Integer integer = (Integer) listIterator.next(); listIterator.remove(); List<List<Integer>> etablirCombinaison = etablirCombinaison(new ArrayList<Integer>(nombres), nb - 1); for (List<Integer> combinaison : etablirCombinaison) { combinaison.add(0, integer); combinaisons.add(combinaison); } } } else { combinaisons.add(new LinkedList<Integer>()); } return combinaisons; }
pourrais tu annoter ton code pour détailler le fonctionnement de chaque ligne stp, j'ai un peu de mal avec la récursivité et combinaison/combinaisons, même si globalement je comprends la démarche...