Egymás melletti azonos elemekből álló részek meghatározása
A kimenet tartalmazza, hogy hány darab
azonos érték van egymás mellett
az egyes részekben.
Példa:
bemenet:
1 1 1 1 2 2 3 1 1 1 2 2 2
kimenet:
4 db 1
2 db 2
1 db 3
3 db 1
3 db 2
Ötlet:
hanyadik_lépés: 1. 2. 3. 4. 5. 6. 7.
szam: 1 1 1 1 2 2 3
érték_eddig: 1 2 3
db_eddig: 1 2 3 4 1 2 1
hanyadik_lépés: 7. 8. 9. 10. 11. 12. 13.
szam: 3 1 1 1 2 2 2
érték_eddig: 3 1 2
db_eddig: 1 1 2 3 1 2 3
Kimenet:
4 db 1
2 db 2
1 db 3
3 db 1
3 db 2
Implementáció:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int ertek, db;
int szam;
bemenet >> szam;
ertek = szam;
db = 1;
while (bemenet >> szam) {
if (szam == ertek) {
db++;
}
else {
cout << db << " db. " << ertek << endl;
ertek = szam;
db = 1;
}
}
cout << db << " db. " << ertek << endl;
return 0;
}
|
HF
Írjuk ki a leghosszabb egymás
melletti azonos elemekből
álló rész hosszát!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int ertek, db;
int szam;
int maximum = 0;
bemenet >> szam;
ertek = szam;
db = 1;
while (bemenet >> szam) {
if (szam == ertek) {
db++;
}
else {
//cout << db << " db. " << ertek << endl;
if (db > maximum)
maximum = db;
ertek = szam;
db = 1;
}
}
//cout << db << " db. " << ertek << endl;
if (db > maximum)
maximum = db;
cout << maximum << endl;
return 0;
}
|
+ pontért:
Írjuk meg a run length encoding-ot
fordítva (a dekódolást), pl.
bemenet:
4 1
3 2
1 3
kimenet:
1 1 1 1 2 2 2 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int db, szam;
while (bemenet >> db >> szam)
for (int i = 1; i <= db; i++)
cout << szam << " ";
cout << endl;
return 0;
}
|
Feladat:
Adott egy sorozat. Adjuk meg, hogy milyen
hosszú a leghosszabb páros elemekből álló rész
(ill. hol kezdődik és hol végződik)!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int ertek, db = 0;
int szam;
int maximum = 0;
int utolso = -1;
int hely = 0;
while (bemenet >> szam) {
hely++;
if (szam % 2 == 0) {
db++;
}
else {
if (db > maximum) {
maximum = db;
utolso = hely-1;
}
db = 0;
}
}
if (db > maximum) {
maximum = db;
utolso = hely;
}
cout << maximum << endl;
cout << utolso - (maximum-1) << " "
<< utolso << endl;
return 0;
}
|