Untitled
unknown
plain_text
3 years ago
2.6 kB
7
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...