[Lekcja 30] Zadanie 4
Ostatnio zmodyfikowano 2012-08-29 20:46
Nevea Temat założony przez niniejszego użytkownika |
[Lekcja 30] Zadanie 4 » 2012-07-28 20:20:03 No nie wiem w ogóle jak się za to zabrać. Wymyśliłem takie coś, lecz wyrzuca mi to ogromne wyniki(parę miliardów). Kod: #include <iostream>
using namespace std;
int main() { int ile = 0; for( int i = 1; i <= 49; i++ ) { for( int j = 1; j <= 49; j++ ) { if( j == i ) { continue; } for( int k = 1; k <= 49; k++ ) { if( k == j || k == i ) { continue; } for( int l = 1; l <= 49; l++ ) { if( l == k || l == j || l == i ) { continue; } for( int m = 1; m <= 49; m++ ) { if( m == l || m == k || m == j || m == i ) { continue; } for( int n = 1; n <= 49; n++ ) { if( n == m || n == l || n == k || n == j || n == i ) { continue; } ile++; } } } } } } cout << ile; return 0; }
To jest moja wizja jak mogę rozwiązać to zadanie za pomocą pętli zagnieżdżonych. Proszę o pomoc co robię tutaj źle, czy coś się powtarza, czy coś. |
|
RazzorFlame |
» 2012-07-28 20:24:09 49^5 = 282475249 Proste i logiczne.
Edit: Sorki ty to do 6 potegi zrobiles wiec jeszcze wiecej. Moim zdaniem jest dobrze zrobione. Moze byc tyle kombinacji |
|
Nevea Temat założony przez niniejszego użytkownika |
» 2012-07-28 20:39:01 No właśnie nie bo wynik miał być pomiędzy 12 a 15 milionów :D |
|
RazzorFlame |
» 2012-07-28 22:26:55 Pisze tam tak? Jesli nie to wal na to xD Jest dobrzaśnie (chyba :D) |
|
Chris4132 |
Dziwne zadanie :/ » 2012-08-26 16:34:37 Mój kod: #include <iostream>
int pokaz( int & licznik ) { licznik++; std::cout << licznik << ". "; }
int main() { int licznik = 0; for( int a = 0; a < 49; a++ ) { for( int b = 0; b < 49; b++ ) { if( b == a ) continue; for( int c = 0; c < 49; c++ ) { if( c == b || c == a ) continue; for( int d = 0; d < 49; d++ ) { if( d == c || d == b || d == a ) continue; for( int e = 0; e < 49; e++ ) { if( e == d || e == c || e == b || e == a ) continue; for( int f = 0; f < 49; f++ ) { if( f == e || f == d || f == c || f == b || f == a ) continue; pokaz( licznik ); std::cout << a + 1 << b + 1 << c + 1 << d + 1 << e + 1 << f + 1 << std::endl; } } } } } } return 0; } W tym zadaniu chyba właśnie o to chodzi. Pisze, że jeśli wynik mieści się między 12 a 15 milionów to jest ok. Tylko to będzie liczyło masę czasu. Zobaczcie sobie chociaż ile czasu będzie liczył licznik chociaż milion. Tego zadania nie powinno być :/ |
|
DejaVu |
» 2012-08-26 16:37:49 1. Zadanie źle wykonałeś.
2. Poprawne rozwiązanie policzy w sekundę.
3. Długo trwa bo wypisujesz kombinacje na ekran - nie wypisuj niczego na ekran podczas wykonywania obliczeń.
/edit:
Poza tym to zadanie pomaga zrozumieć czym jest tak naprawdę złożoność obliczeniowa i jaką mocą obliczeniową dysponuje przeciętny komputer.
/edit2:
Poza tym co to za ocenianie co powinno być, a czego nie powinno być? Programowanie polega na rozwiązywaniu problemów, a nie na ich unikaniu. Gdyby czasy wykonywania na współczesnym komputerze były absurdalne i nierealne to takie zadanie by się nie znalazło w kursie. To zadanie da się rozwiązać w przyzwoitym czasie i zgodnie z założeniami wymienionymi w pracy domowej. |
|
Chris4132 |
» 2012-08-26 17:08:22 Mi wychodzi tak samo, miliardami. Może chociaż nas ktoś nakierować, jak to zrobić? Poprzednie dwa zadania udało się zrobić. |
|
DejaVu |
» 2012-08-26 17:23:57 1,2,3,4,5,6 == 6,1,2,3,4,5 - to jest jedno rozwiązanie, a nie dwa. |
|
« 1 » 2 3 |