II. 1. d) beolvas n x <- 0 minden 1 <- 1,n v.e. | beolvas ... | c ... | amíg ... | a ... | ha ... [] ---------- II.3. if (p.pret < 100) a = p.denumire[0]; else a = '*'; ----------- III.1. void DNPI(int n) { for (int i = 1; i <= n; i+=2) { if (n % i == 0) { bool prim = true; if (i < 2) prim = false; for (int j = 3; j*j <= i; j+=2) if (i % j == 0) prim = false; if (!prim) cout << i << " "; } } } ------------ III.2. ------------ III.3.b) #include #include using namespace std; int main() { ifstream bemenet("date.in"); int m, n; bemenet >> m >> n; int fa[100] = {}; int fb[100] = {}; for (int i = 1; i <= m; i++) { int elem; bemenet >> elem; fa[elem]++; } for (int i = 1; i <= n; i++) { int elem; bemenet >> elem; fb[elem]++; } int eredmeny = 0; for (int ertek = 0; ertek <= 99; ertek++) { if (fa[ertek] < fb[ertek]) eredmeny += fa[ertek]; else eredmeny += fb[ertek]; } cout << eredmeny << endl; return 0; } III.3.a) Az algoritmus a két sorozat beolvasása közben egy-egy frekvenciatömbben leszámolja, hogy melyik elem hányszor jelenik meg a sorozatokban. Majd minden lehetséges érték esetén (0-tól 99-ig) megnézzük, hogy ebből az értékből melyik sorozatban van kevesebb (mert csak ennyi darab olyan pár képez- hető, amiben ez az érték van) és ezeket a minimumokat összeadva megkapjuk a végeredményt. Idő szempontjából hatékony, mert csak egyszer haladunk végig a sorozat elemein, minden elem esetén konstans számú lépést végezve. A végén a frekvencia- tömbök feldolgozására szintén konstans mennyiségű idő kell (nem függ a sorozatok hosszától). ha memória is kellene: Memória szempontjából hatékony, mert nem tárolja a sorozatok elemeit, csak két konstans méretű frekvenciatömböt és néhány egyszerű változót.