Cuprins

Tema 2: Micul – Marele strateg

Obiective

  1. Înțelegerea conceptului de graf și a modurilor de parcurgere aferente
  2. Aplicarea algoritmilor studiați pe topologiile de tip graf in exemple practice

Informații

  1. Deadline hard, 19 Mai ora 23:59 (termen limită - nu se obţin puncte pe soluţiile trimise mai târziu)
  2. Trimiterea temelor se face pe platforma vmchecker (folosiți credențialele de pe http://acs.curs.pub.ro).
  3. Checker-ul offline îl puteţi descărca de la această adresă
  4. Puteţi cere ajutor oricând la această adresă email

Descriere

Micul curier trebuie sa isi indeplineasca cerintele de la munca cat mai bine. El este responsabil cu livrarea coletelor catre anumiti clienti din Bucuresti. Ca multi participanti in trafic, el alege sa foloseasca metroul ca mijloc de transport principal. Din statiile in care ajunge este necesar sa se deplaseze in continuare pe jos pana la adresa aferenta fiecarui client.

Avand in vedere faptul ca timpul lui de livrare este unul limitat si el nu este cel mai bun strateg, curierul s-a gandit sa va ceara ajutorul. Cum ar fi daca ne-am transforma in micile lui ajutoare si ne-am pune in functiune abilitatile de a scrie cod cu scopul de a-i organiza munca ? Credeti ca am reusi sa il transformam intr-un “Mare strateg” ? Ramane de vazut !

Date de intrare

Fisierul date.in

  1. Numarul de statii
  2. Corespunzator fiecarei statii, fiecare atribut este afisat pe cate un rand
    • Nume_statie
    • Nr_clienti
  3. Fiecare client este reprezentat de:
    • Nume_client
    • Timp_fata_de_statia_de_metrou
    • Suma_de_platit
  4. Numar_strazi_intre_clienti
  5. Pe urmatoarele Numar_strazi_intre_clienti linii avem
    • Client1 Client2 timp
    • Exemplu: Client17 Client20 3
  6. Numar_rute
  7. Pe urmatoarele Numar_rute linii avem
    • Statie1 Statie2 distanta
    • Exemplu: Statie5 Statie3 2
  8. Numar_operatii_strategie
  9. Pe urmatoarele Numar_operatii_strategie linii avem operatiile si descrierea lor

Backtracking

Pentru testele cu Backtraking se vor citi un numar_de_strazi si matricea corespunzatoare pentru a ajunge inapoi la sediul jobului sau.

Punctaje si Detalii Tehnice

Punctaje:

Detalii Tehnice

pana la locatia acestuia

poate ajunge. Dupa livrarea comenzilor, curierul se intoarce la statia de metrou din care a plecat

carora le livreaza, are parte si de clienti indisponibili. Dupa ce va termina de expediat coletele la clientii disponibili, el se va intoarce la statia de metrou.

Anexa

Structurile urmatoare sunt optionale si nu trebuie implementate la fel

Executabilul obținut în urma compilării va avea numele curier, iar regula de rulare va fi:

./curier date.txt rezultate.out

Cerinte

statie in acest caz).

marcheaza cu infinit in cazul in care statia exista

marcheaza cu infinit in cazul in care strada exista

reparatii.

Afisarea se face sub forma unui vector de string-uri ce contine numele clientilor la care curierul a livrat.

vector de string-uri ce contine numele clientilor la care curierul a livrat.

drumul cel mai scurt de la clientul respectiv la toti clientii. De la ultimul client micul strateg alege direct strada care face legatura cu metroul

mare sau egala cu numarul “Valoare_suma”

Backtracking

Dupa ce micul strateg reuseste sa devina un „Mare strateg”, voi fiind responsabili in totalitate pentru reusita lui, curierul trebuie sa isi incheie activitatea prin depunerea sumei colectate din coletele achitate de catre clienti. El poate depune aceasta suma la orice sediu al firmei, insa nu mai poate folosi ca mijloc de transport metroul. De specificat faptul ca fiecare statie de metrou are asociata un sediu.

Luand in considerare faptul ca drumul arata ca un labirint, fiind intregit doar din strazi la stanga sau la dreapta (numarul strazi merge la stanga = numarul de strazi merge la dreapta), sa il ajutam in continuare pe Marele strateg isi indeplineasca toate cerintele:

Sa se determine cel mai scurt timp in care curierul poate sa ajunga la sediu.

mare adversar al marelui nostru strateg sufera modificari la fiecare noua deplasare.

diagonalei principale din matrice.

Se poate face si o metoda mai inteligenta decat implementarea cu Backtracking. De asemenea, in exemplul din poza este ales un exemplu Greedy. Mare atentie cum implementati alegerea drumului.

Date de iesire

Fisierul rezultate.out

Fişierul de ieşire va conţine rezultatele operaţiilor ce generează un răspuns. Rezultatele sunt scrise în ordinea în care sunt scrise operaţiile primite la intrare, fiecare rezultat este urmat de un final de linie.

In cazul testelor cu Backtraking, pe ultima linie a fisierului este timpul minim pana la sediu.

Reguli de trimitere

Restricții

;

Temele care vor fi copiate vor primi -5 pct şi studenţii implicaţi - mustrări şi vor figura pe blacklist-ul cursului de SDA.