Ensemble des parties d'un ensemble

Résolu/Fermé
matt2421 Messages postés 16 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 28 novembre 2016 - 25 nov. 2016 à 18:53
 Utilisateur anonyme - 25 nov. 2016 à 20:28
Bonjour,
j'aimerais creer un code qui me permettrait d'obtenir ceci:

This program prints the power set of the set of natural numbers 0 ... N.
Enter N (0 <= N <= 10): 1,5
Illegal numeric format
Enter N (0 <= N <= 10): -2
Enter N (0 <= N <= 10): 31
Enter N (0 <= N <= 10): 2
The powerset of { 0, 1, 2 } is
{ { }, { 0 }, { 1 }, { 0, 1 }, { 2 }, { 0, 2 }, { 1, 2 }, { 0, 1, 2 } }

VOICI MON CODE REDIGE PAR MOI:

import acm.program.ConsoleProgram;

public class PowerSet extends ConsoleProgram {

public void run(){
println("This program prints the power set of the set of natural numbers 0");

int N = readInt("Insert a natural number:");
while(true){
if(0> N||N >10 ){
readInt("Insert a natural number:");

}


}




if(0<=N ||N<=10 ){ // SI LE NOMBRE EST COMPRIS ENTRE 0 ET 10....la Formule magique...

}

comment continuer svp?

1 réponse

Utilisateur anonyme
25 nov. 2016 à 20:19
Bonjour

Si tu associes un bit à chaque élément de ton ensemble, une partie de l'ensemble correspond à un nombre binaire à N chiffres avec la convention :
si un bit est à 0, l'élément correspondant n'appartient pas à la partie
si un bit est à 1, l'élément correspondant n'appartient pas à la partie
Pour lister toutes les parties de l'ensemble, il suffit d'énumérer tous les nombres à N bits, c'est à dire de compter de 0 à (2^N)-1.
Il ne reste qu'à traduire les nombres en binaires, ce qui est généralement inutile puisque les entiers sont représentés en binaire dans les ordinateurs, et à faire la liste des éléments associés aux bits qui sont à 1 dans le nombre en question.
0
matt2421 Messages postés 16 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 28 novembre 2016
25 nov. 2016 à 20:22
suis pas tres pro java. ca pourrait donner quoi en code stp?
0
Utilisateur anonyme
25 nov. 2016 à 20:28
Je t'ai juste donné le principe. Je ne connais pas Java.
C'est un algorithme très simple, pas besoin d'être pro.
Attention, comme il se base sur le fait que (2^N)-1 est un entier, avec une implémentation simple, la valeur autorisée pour N reste assez faible. Mais qui irait afficher l'ensemble des parties d'un ensemble de 30 éléments ?
0