Ensemble des parties d'un ensemble [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
jeudi 19 mai 2016
Statut
Membre
Dernière intervention
28 novembre 2016
-
 Utilisateur anonyme -
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


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.
Messages postés
16
Date d'inscription
jeudi 19 mai 2016
Statut
Membre
Dernière intervention
28 novembre 2016

suis pas tres pro java. ca pourrait donner quoi en code stp?
Utilisateur anonyme
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 ?