Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 30] Zadanie 4

Ostatnio zmodyfikowano 2012-08-29 20:46
Autor Wiadomość
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:
C/C++
#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ś.
P-61315
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
P-61316
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
P-61318
RazzorFlame
» 2012-07-28 22:26:55
Pisze tam tak? Jesli nie to wal na to xD Jest dobrzaśnie (chyba :D)
P-61330
Chris4132
Dziwne zadanie :/
» 2012-08-26 16:34:37
Mój kod:
C/C++
#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ć :/
P-63665
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.
P-63666
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ć.
P-63670
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.
P-63673
« 1 » 2 3
  Strona 1 z 3 Następna strona