Ordinamento dell'array in base a una formula [chiusa]

-2

Ho bisogno di ordinare i valori in base al seguente problema:

Per ogni n, determina le triple (i, j, k) che soddisfano i + j + k = n, quindi ordina le triple (per ogni n) rispetto al valore della formula (4 * i + 5 * j + 4 * k + 1) in ordine ascendente. Ecco lo pseudocodice approssimativo:

for n in range(3,N+1):
   for i in range(1,n-1):
        for j in range(1,n-1):
            for k in range(1,n-1):
                 if(i+j+k)==n:
                    [sort triples in ascending order wrt to the value of (4*i+5*j+4*k+1)]

Per ora, posso solo stampare le triple che soddisfano i + j + k = n.

C'è un modo per fare l'ordinamento all'interno del ciclo n? O dovrei archiviarli in una matrice e poi ordinare le bolle più tardi?

    
posta jjv 26.11.2015 - 13:05
fonte

1 risposta

5

Per questo caso preciso, (4 * i + 5 * j + 4 * k + 1) = 4 * n + j + 1. Poiché n è una costante, devi ordinarla per j. O semplicemente usa j per il tuo loop esterno (dopo n).

Inoltre, puoi calcolare k direttamente da i e j

for n in range(3,N+1):
   for j in range(1,n-1):
        for i in range(1,n-1):
            k = (n-i-j)
            if (1<=k && k<=n):
                 [print triplet (i,j,k)]
    
risposta data 26.11.2015 - 13:18
fonte

Leggi altre domande sui tag