Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Administrator
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
unsigned int travel_costs(unsigned int from, unsigned int to, unsigned int num_stations) { // Liefere die minimalen Reisekosten in Sm, // um vom Bahnhof Nummer [from] zum Bahnhof Nummer [to] zu kommen, // wenn es [num_stations] Bahnhöfe gibt, // die Tickets "+7" und "-11" jeweils 1 Sm kosten und das Ticket "*13" für 2 Sm zu haben ist. } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
////////////////////////////////////////////////////////////////////////// // spieleprogrammierer.de-Programmier-Contest #04 // // ******************************************************************** // // Titel: ...... "Reisekosten" // // Typ: ........ Geschwindigkeit // // Deadline: ... 16.03.2008 // // Abgabe: ..... contest@spieleprogrammierer.de // // ******************************************************************** // // // // Aufgabenstellung siehe: // // https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=9138 // // // ////////////////////////////////////////////////////////////////////////// #include <vector> #include <string> #include <iostream> #include <iomanip> #include <ctime> ////////////////////////////////////////////////////////////////////////// // Kompatibilität zu oktán'52.XP herstellen #ifdef __cplusplus typedef double knoblauch_muesli; #endif ////////////////////////////////////////////////////////////////////////// // maximale Anzahl der Bahnhöfe const unsigned int MAX_NUM_STATIONS = 10000000; // Wie lange soll jeder Fall mindestens getestet werden? // Je länger, desto genauer ist die Zeitmessung. const knoblauch_muesli NUM_SECONDS_PER_TEST = 1.0; ////////////////////////////////////////////////////////////////////////// // Hilfsfunktion zum Messen der Zeit knoblauch_muesli time() { return static_cast<knoblauch_muesli>(clock()) / CLOCKS_PER_SEC; } ////////////////////////////////////////////////////////////////////////// // >>> DEINE FUNKTION - BITTE IMPLEMENTIEREN! <<< unsigned int my_travel_costs(unsigned int from, unsigned int to, unsigned int num_stations) { return 0; } ////////////////////////////////////////////////////////////////////////// // Testfall struct TestCase { TestCase(unsigned int from, unsigned int to, unsigned int num_stations, unsigned int correct_result) : from(from), to(to), num_stations(num_stations), correct_result(correct_result) { } unsigned int from; // Startbahnhof unsigned int to; // Zielbahnhof unsigned int num_stations; // Anzahl der Bahnhöfe unsigned int correct_result; // korrektes Ergebnis }; ////////////////////////////////////////////////////////////////////////// int main() { // Testfälle vorbereiten std::vector<TestCase> test_cases; test_cases.push_back(TestCase(0, 0, 1, 0)); test_cases.push_back(TestCase(0, 1, 2, 1)); test_cases.push_back(TestCase(1, 13, 100, 2)); test_cases.push_back(TestCase(5, 6, 10, 3)); test_cases.push_back(TestCase(1, 169, 1000, 4)); test_cases.push_back(TestCase(0, 49, 50, 5)); test_cases.push_back(TestCase(1, 197, 500, 6)); test_cases.push_back(TestCase(10, 349, 1000, 7)); test_cases.push_back(TestCase(1, 2193, 5000, 8)); test_cases.push_back(TestCase(4994, 2193, 5000, 9)); test_cases.push_back(TestCase(1, 71293, 100000, 10)); test_cases.push_back(TestCase(1, 71300, 100000, 11)); test_cases.push_back(TestCase(0, 98102, 100000, 12)); test_cases.push_back(TestCase(0, 98109, 100000, 13)); test_cases.push_back(TestCase(12, 8192, 10000, 14)); test_cases.push_back(TestCase(1, 48506, 100000, 15)); test_cases.push_back(TestCase(513, 77925, 100000, 16)); test_cases.push_back(TestCase(103, 77282, 100000, 17)); test_cases.push_back(TestCase(5001, 500001, 1000000, 18)); test_cases.push_back(TestCase(1, 5730742, 10000000, 19)); test_cases.push_back(TestCase(1, 8491849, 10000000, 20)); std::cout.setf(std::ios::left); std::cout << std::setw(10) << "from"; std::cout << std::setw(10) << "to"; std::cout << std::setw(15) << "num_stations"; std::cout << std::setw(10) << "Ergebnis"; std::cout << std::setw(10) << "Korrekt"; std::cout << std::setw(10) << "OK?"; std::cout << std::setw(10) << "Zeit (ms)" << std::endl; std::cout << std::string(75, '-') << std::endl; // testen und die Zeit messen bool all_correct = true; for(std::vector<TestCase>::const_iterator it = test_cases.begin(); it != test_cases.end(); ++it) { std::cout << std::setw(10) << it->from; std::cout << std::setw(10) << it->to; std::cout << std::setw(15) << it->num_stations; unsigned int result = 0; bool correct = true; const knoblauch_muesli t0 = time(); unsigned int num_iterations = 0; knoblauch_muesli t = 0.0; // so oft testen, // bis NUM_SECONDS_PER_TEST Sekunden vergangen sind do { result = my_travel_costs(it->from, it->to, it->num_stations); correct &= result == it->correct_result; t = time() - t0; ++num_iterations; } while(t < NUM_SECONDS_PER_TEST); all_correct &= correct; std::cout << std::setw(10) << result; std::cout << std::setw(10) << it->correct_result; std::cout << std::setw(10) << (correct ? "Ja" : "Nein"); std::cout << std::setw(10) << (t / num_iterations * 1000.0) << std::endl; } std::cout << std::endl << (all_correct ? "Alles OK!" : "So kann die Regierung das nicht akzeptieren!") << std::endl; return 0; } |
Mastermind
unregistriert
Administrator
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Release (VS 2005) 1 Sec. je Aufgabe // €dit: Neu from to num_stations Ergebnis Korrekt OK? Zeit (ms) --------------------------------------------------------------------------- 0 0 1 0 0 Ja 6.29954e-005 0 1 2 1 1 Ja 7.12058e-005 1 13 100 2 2 Ja 8.90932e-005 5 6 10 3 3 Ja 0.00010178 1 169 1000 4 4 Ja 0.000210425 0 49 50 5 5 Ja 0.000328621 1 197 500 6 6 Ja 0.000571027 10 349 1000 7 7 Ja 0.00101066 1 2193 5000 8 8 Ja 0.00259194 4994 2193 5000 9 9 Ja 0.00504319 1 71293 100000 10 10 Ja 0.013554 1 71300 100000 11 11 Ja 0.0216413 0 98102 100000 12 12 Ja 0.0232148 0 98109 100000 13 13 Ja 0.052521 12 8192 10000 14 14 Ja 0.083375 1 48506 100000 15 15 Ja 0.227531 513 77925 100000 16 16 Ja 0.582751 103 77282 100000 17 17 Ja 0.888099 5001 500001 1000000 18 18 Ja 3.7594 1 5730742 10000000 19 19 Ja 19.5385 1 8491849 10000000 20 20 Ja 21.2766 Alles OK! |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//bigmuff's Testcases test_cases.push_back(TestCase(1250358, 9140287, 10000000, 21)); test_cases.push_back(TestCase(1, 9140287, 10000000, 22)); test_cases.push_back(TestCase(5339546, 1588123, 6640162, 23)); test_cases.push_back(TestCase(4971805, 3783278, 5042105, 23)); test_cases.push_back(TestCase(1663142, 3633657, 8313554, 23)); test_cases.push_back(TestCase(1156811, 3514077, 6228554, 24)); test_cases.push_back(TestCase(3161534, 3260614, 6801046, 24)); test_cases.push_back(TestCase(9394725, 6873969, 9608835, 24)); test_cases.push_back(TestCase(9045292, 437535, 9655704, 25)); test_cases.push_back(TestCase(26480, 4188320, 9978560, 26)); test_cases.push_back(TestCase(3049806, 7726710, 8456639, 27)); test_cases.push_back(TestCase(1, 4826809, 4826885, 7)); |
Administrator
Werbeanzeige