Maison >développement back-end >C++ >Pour tous les nombres binaires possibles de longueur n, la somme des deux moitiés est égale ?

Pour tous les nombres binaires possibles de longueur n, la somme des deux moitiés est égale ?

WBOY
WBOYavant
2023-09-03 13:21:111122parcourir

Pour tous les nombres binaires possibles de longueur n, la somme des deux moitiés est égale ?

Ici, nous verrons tous les nombres binaires possibles de n bits (n est donné par l'utilisateur) où la somme de chaque moitié est la même. Par exemple, si le nombre est 10001, ici 10 et 01 sont identiques car leur somme est la même et ils sont dans des moitiés différentes. Ici, nous allons générer tous les nombres de ce type.

Begin
   if n is 0, then
      if diff is 0, then
         print left + right
      end if
      return
   end if
   if n is 1, then
      if diff is 0, then
         print left + 0 + right
         print left + 1 + right
      end if
      return
   end if
   if 2* |diff| <= n, then
      if left is not blank, then
         genAllBinEqualSumHalf(n-2, left + 0, right + 0, diff)
         genAllBinEqualSumHalf(n-2, left + 0, right + 1, diff-1)
      end if
      genAllBinEqualSumHalf(n-2, left + 1, right + 0, diff + 1)
      genAllBinEqualSumHalf(n-2, left + 1, right + 1, diff)
   end if
End

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer