2010-05-31 7 views
-5

J'essaie de trouver une solution à une question .... nous avons un nombre, exemple: 20 ... et nous avons 6 nombre: {a, b, c, d, e, f} < 20, t essayer de trouver toutes les valeurs de ces chiffres, mais seulement si nous pouvons combinate (Whit + ou -) petit morceau 2 de ce nombre et d'obtenir toute la valeur inférieure à 20: par exempleUne question difficile?

nous choisissons 31:

a = 22 b = 21 c = 14 d = 11 e = 9 f = 5

nous avons: 22 - 21 = 1; 11 - 9 = 2; 14 - 11 = 3; 9 - 5 = 4; f = 5; 11 - 5 = 6; 21 - 14 = 7; .... .... .... .... .... 21 + 9 = 30; 9 + 22 = 31;

+1

On dirait que vous êtes sur le bon chemin. Les chiffres s'additionnent. –

+0

Vous devriez marquer ceci comme devoir, s'il y en a un. Jetez un oeil à la faq: http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions – soulmerge

+1

La question pourrait utiliser une vérification de preuve en anglais - il est illisible. –

Répondre

5

Cela ressemble à des devoirs, alors je vais essayer de vous donner quelques conseils.

Vous souhaitez effectuer une boucle sur toutes les combinaisons de deux nombres de la matrice. Pour ce faire, vous pouvez utiliser une boucle externe qui boucle sur tous les nombres, puis à l'intérieur de cette boucle, une boucle interne qui boucle également sur tous les nombres.

Selon exactement ce que vous voulez faire, vous devez décider si vous voulez gérer x, y séparément y, x

0
void FindCombinations(int n, int [] values) 
{ 
    for(int i = 0; i < values.length; i++) 
    { 
    int left = values[i]; 
    for(int j = 0; k < values.length; j++) 
    { 
     int right = values[j]; 

     if (left == right) 
      continue; 

     if (left + right < n) 
      Console.Write(string.Format("{0} + {1} = {2} < {3}", left, right, left+right, n); 
     if (left - right < n) 
      Console.Write(string.Format("{0} - {1} = {2} < {3}", left, right, left-right, n); 
    } 
    } 
} 

Bien que cette question pue devoirs ce n'est pas vraiment difficile (bien que sans doute difficile interpréter).

Remarque: Cette solution est O(n^2) et n'est pas efficace, gardez cela à l'esprit.

+0

Vous devriez probablement ignorer les combinaisons où 'i == j'. –

+0

Hrm vous avez probablement raison! – Aren

+0

-1 pour ne pas avoir tenté de comprendre le problème avant de poster du code. –

1

étant donné un nombre naturel n, trouver toutes les combinaisons de 6 entiers positifs un, b, c, d, e, et f tel que {un, b, c, d, e, f} ∪ {un + b, un + c, ..., un + f, b + c, b + d, ..., b + f, ..., e + f } ∪ {un-b, un-c, ..., un-f, b-c, b - d, ..., b -f, ..., e -f, b-un, c-un, ..., f -un, c-b, d-b, ..., f-b, ..., f -e} contient 1, 2, 3, 4, ..., n - 1 et n.

Je n'ai pas beaucoup réfléchi à ce problème, mais il me semble que c'est un problème difficile. Peut-être il y a un truc, je ne suis pas sûr, mais si je devais résoudre ce problème, je voudrais tout d'abord essayer de trouver la moins n pour lesquelles il n'y pas infiniment nombreuses solutions (si n est 1, par exemple, alors toute combinaison de 6 nombres naturels contenant deux nombres naturels consécutifs fonctionnera).

Je pense que vous aurez plus de chance de trouver une solution à ce problème dans un forum de discussion en mathématiques.