Devo programmare tutti i set di numeri possibili da 1
a N
per un numero arbitrario di numeri interi senza permutazione.come evitare questo errore for-loop in C++?
Dal momento che non so come spiegarlo meglio ecco alcuni esempi:
per m = 2
vector<vector<int>> box;
int N = 5;
for(int i = 1; i <= N; i++) {
for(int j = N; j >= i; j--) {
vector<int> dummy;
dummy.push_back(i);
dummy.push_back(j);
box.push_back(dummy);
}
}
per m = 3
vector<vector<int>> box;
int N = 5;
for(int i = 1; i <= N; i++) {
for(int j = N; j >= i; j--) {
for(int k = N; k >= j; k--) {
vector<int> dummy;
dummy.push_back(i);
dummy.push_back(j);
dummy.push_back(k);
box.push_back(dummy);
}
}
}
Questo funziona perfettamente bene e il risultato è ciò che di cui ho bisogno. Ma come già accennato, m
può essere arbitrario e non posso essere preso la briga di implementarlo per m = 37
o altro. N
e m
sono valori noti ma cambiano mentre il programma è in esecuzione. Ci deve essere un modo migliore per implementare questo rispetto al caso m = 37
per implementare una riga di 37-per-loop. Qualcuno può aiutarmi? Sono un po 'incapace: \
modifica: per spiegare meglio quello che sto cercando qui sono alcuni altri esempi.
Diciamo N = 5
e m = 4
, di 1223
è una soluzione fattibile per me, 124
non è dal momento che è a corto. Diciamo che ho già trovato 1223
come soluzione, che non ho bisogno di 2123
, 2213
o di qualsiasi altra permutazione di questo numero.
edit2: O se preferisci una formulazione più visiva (matematica?) Del problema, qui vai.
Considerare m
la dimensione. Con m
stato 2 si rimane con una matrice di dimensioni N
. Sto cercando il triangolo superiore (o inferiore) di questa matrice inclusa la diagonale. Passiamo a m = 3
, la Matrix diventa un cubo tridimensionale (o Tensore se lo si desidera), ora sto cercando il tetraedro superiore (o inferiore) compresa la diagonale-piana. Per dimensioni superiori a 3, sto cercando l'iper tetraedro dell'ipercole, compreso il piano iper-diagonale.
c'era la stessa domanda un po 'di tempo fa, forse mi trovo .... – user463035818
questo è più adatto per http: //codereview.stackexchange. it/ – OMGtechy
Possibile duplicato di [Ricorsione di for] (http://stackoverflow.com/questions/33424700/recursion-of-fors) – user463035818