Untitled
unknown
plain_text
3 years ago
2.6 kB
5
Indexable
using System; namespace Studenci { internal class Program { static void Main(string[] args) { int d = 2000; int h = 7; int[][] hotele = new int[][] //tablica tablic z danymi { new int[] { 100, 54 }, //pierwszy element tablicy(wiersza) dystans, drugi cena new int[] { 120, 70 }, new int[] { 400, 17 }, new int[] { 700, 38 }, new int[] { 1000, 25 }, new int[] { 1200, 18 }, new int[] { 1440, 40 } }; int i = 0; //zmienna pomocnicza i oznacza start przeszukiwania int droga = 0; //zmienna pomocnicza na dotychczasowy czas int n = 0; //zmienna na ilosc porownan int[] dystanse = new int[h]; //zmienna na tablice wynikowa dystansów hoteli int k = 0; //zmienna licznik ilosci odwiedzonych hoteli while (droga < d) //wykonuj dopoki droga pokonana mniejsza od dystans { if (d - droga < 800) //gdy pozostala droga mniejsza od dystans do pokonania { break; //zatrzymaj petle } double minc = int.MaxValue; //ustal duza wartosc jako min int mi = i; //zmienna na indeks min hotelu for (int j = i; j < hotele.Length; j++) //petla od i do konca tablicy hoteli { n++; //zwieksz ilosc porownan o 1 if (hotele[j][1] < minc && hotele[j][0] - droga <= 800) //jezeli hotel ma mniejsza cene niz min oraz dystans do hotelu jest mniejszy niz 800 { minc = hotele[j][1]; //zapisz nowe minimum mi = j; //zapisz nowy indeks minimum } } dystanse[k] = hotele[mi][0]; //dopisz znaleziony hotel jego dystans do tablicy dystansów k++; //zwieksz licznik odwiedzonych hoteli o 1 droga += hotele[mi][0]; //dodaj jego dystans do drogi łącznej i = mi + 1; //przesun i o jedno miejsce poza znaleziony hotel } //przejdz od 0 do k for (int j = 0; j < k; j++) { Console.Write(dystanse[j] + " "); //wyswietl hotel na pozycji j } Console.WriteLine(); Console.WriteLine("n porównań = " + n); } } }
Editor is loading...