Osnovne strukture podataka: niz, string i matrica – zadaci

Lekcija 1 od 11 · Strukture podataka

Pre stekova, redova i stabala dobro je uvežbati rad sa tri osnovne strukture koje se javljaju u skoro svakom zadatku: niz (i vektor), string i matrica. Zadaci na ovoj strani su sa kvalifikacija i školskih takmičenja.

Pre nego što počneš: potrebno predznanje – nizovi, stringovi.
Kako da učiš: svaki primer prekucaj i pokreni, a zadatke na kraju prvo reši sam/a; uputstvo i rešenje otvori tek posle toga. Svi programi su u C++-u.

Kratak pregled

StrukturaPristup elementuTipična upotrebaLekcija
niz / vectora[i], O(1)spisak brojeva, brojačiNizovi, vektori
strings[i], O(1)reči, cifre broja, šifreStringovi
matricaa[i][j], O(1)tabele, table za igru, mapeDvodimenzionalni nizovi

Zajedničko im je da elementi stoje jedan do drugog u memoriji, pa je pristup po indeksu trenutan, a umetanje u sredinu sporo (treba pomeriti sve iza).

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.

ZADATAK 01Težina: Lako

Palindrom

Ispitati da li je uneti petocifreni broj palindrom (čita se isto sleva i zdesna).

Izlaz: DA ili NE.

Primer 1

Ulaz

50605

Izlaz

DA

Primer 2

Ulaz

12345

Izlaz

NE
ZADATAK 02Težina: Srednje

Uzastopna slova

Dat je string od malih slova engleske abecede (dužine do 10 000 000). Pronađi najduži podstring u kome je svako slovo, počev od drugog, sledeće u abecedi u odnosu na prethodno (na primer bcd). Ako ima više najdužih, ispiši onaj čije je prvo slovo najranije u abecedi.

Primer 1

Ulaz

bbcdrtughih

Izlaz

bcd

Primer 2

Ulaz

xyzabc

Izlaz

abc
ZADATAK 03Težina: Lako

Trag matrice

Trag kvadratne matrice je zbir elemenata na glavnoj dijagonali (od gornjeg levog do donjeg desnog ugla). Data je matrica n × n (1 ≤ n ≤ 1000, elementi od −10 000 do 10 000). Izračunaj njen trag.

Primer

Ulaz

3
2 0 0
1 1 0
3 3 3

Izlaz

6
ZADATAK 04Težina: Srednje

Rotacija matrice

Data je matrica n × m. Ispiši je zarotiranu za 90° u smeru kazaljke na satu.

Primer

Ulaz

2 3
1 2 3
4 5 6

Izlaz

4 1
5 2
6 3
Česte greške i saveti
  • Kod stringa pazi na indekse: poslednji znak je s[n − 1].
  • Za ulaz od milion i više znakova koristi ios::sync_with_stdio(false).
  • Zbir elemenata matrice 1000 × 1000 može da pređe opseg int – koristi long long.

Proveri znanje

Otvori kviz

Osnovne strukture

1. Koliko traje pristup elementu a[i] niza?




2. Koji elementi čine glavnu dijagonalu matrice?




3. Zašto je umetanje u sredinu niza sporo?