Zadanie lotka
Ostatnio zmodyfikowano 2014-05-07 02:34
heroarthur Temat założony przez niniejszego użytkownika |
Zadanie lotka » 2014-05-06 23:25:17 Intrygujące jest to zadanie domowe z lotkiem. Zrobiłem to:
int main(){
int liczba = 0; int al = 49;
for(int a = 0; a < al; a++){ for(int b = 0; b < al-1; b++){ for(int c = 0; c < al-2; c++){ for(int d = 0; d < al-3; d++){ for(int e = 0; e < al-4; e++){ for(int f = 0; f < al-5; f++){
liczba++; } } } } } }
cout<<"liczba wszystkich mozliwosc i wylosowania 6 liczb to: "<<liczba; return 0; }
ale jak się domyślacie to daje znacznie większą liczbę albowiem tutaj nie wypisze nam liczby wszystkich podzbiorów 6 elementowych, ale dodatkowo permutacje w tych podzbiorach. No dobra, to jak to zrobić zagnieżdżonymi pętlami? |
|
smoff |
» 2014-05-07 01:04:44 Witam, również miałem problemy z tym zadaniem, a właściwie poprzednim które jest bardzo podobne. Zadanie z lotto rozwiązałem w ten sposób
#include <iostream>
int main() {
int x= 0;
for (int a=1; a<=49; a++) { for (int b=1; b<49; b++) { if (a>=b) continue;
for (int c=1; c<=49; c++) { if (b>=c) continue;
for (int d=1; d<=49; d++) { if (c>=d) continue;
for (int e=1; e<=49; e++) { if (d>=e) continue;
for (int f=1; f<=49; f++) { if (e>=f) continue;
x++; } } } } } }
std::cout << x;
return 0; }
Zapewne można to zrobić w jakiś inny "ładniejszy" sposób, bez konieczności dopisywania continue do każdej pętli, ale na nic lepszego nie wpadłem. |
|
OSA_PL |
» 2014-05-07 02:34:02 int main() { int liczba = 0; int al = 49; for( int a = 1; a <= al; a++ ) for( int b = a + 1; b <= al; b++ ) for( int c = b + 1; c <= al; c++ ) for( int d = c + 1; d <= al; d++ ) for( int e = d + 1; e <= al; e++ ) for( int f = e + 1; f <= al; f++ ) liczba++; cout << "liczba wszystkich mozliwosc i wylosowania 6 liczb to: " << liczba; return 0; }
|
|
« 1 » |