Задача
Петрик і Марічка захопились грою поле-чудес: Марічка записує слово, що складається з великих англійських букв, а Петрик старається розпізнати його, причому відгадана буква відкривається на всіх позиціях, де вона міститься. За яку найменшу кількість ходів Петрик зможе відгадати задане слово.
Вхідні дані
Слово записане великими англійськими буквами (не більше [latex]100[/latex] символів).
Вихідні дані
Відповідь до задачі.
Тести
Вхідні дані | Вихідні дані |
[latex]GOOGLE[/latex] | [latex]4[/latex] |
[latex]ALBUS[/latex] | [latex]5[/latex] |
[latex]OOO[/latex] | [latex]1[/latex] |
Код програми
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { char s[101]; cin >> s; sort( s, s + strlen(s) ); int k = 1; char c = s[0]; for(int i = 0; i < strlen(s); i++){ if( s[i] != c ){ c = s[i]; k++; } } cout << k; return 0; } |
Рішення завдання
Створимо місце для слова і прочитаємо його, далі використаємо функцію sort ( з бібліотеки algorithm ) для того, щоб однакові букви йшли поряд і заведемо змінну, спочатку рівну [latex]1[/latex], так як слово складається мінімум з однієї букви, і будемо збільшувати її на [latex]1[/latex], якщо зустрінеться нова буква.
Код програми з классом string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <cstring> using namespace std; int main() { string s; cin >> s; for (int j = 0; j < s.size(); j++) { int i = j + 1; while (i < s.size()) { if(s[j] == s[i] and i != j) { s.erase(i,1); } else i++; } } cout << s.size(); return 0; } |
Рішення завдання
Створимо місце для слова і прочитаємо його, далі будемо перевіряти для кожної букви чи повторюється вона і якщо повторюється, то всі букви, окрім тої від якої перевіряємо, будемо видаляти. У кінці виведемо кількість елементів строки.
Код програми з множиною
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <set> using namespace std; int main() { set<char> k; set<char>::iterator iter; char s[101]; cin >> s; for(int i = 0; i < strlen(s); i++){ k.insert(s[i]); } cout << k.size(); return 0; } |
Рішення завдання
Створимо місце і прочитаємо слово. Подалі кожну букву слова запишемо, як елемент множини [latex]і.[/latex] Так як множина автоматично видаляє всі однакові елементи, то відповіддю до завдання буде кількість елементів множини.
Посилання
Умова завдання на e-olymp.com.
Код рішення на ideone.com.
Код рішення з множиною на ideone.com.
Код рішення з классом string ideone.com.
Для отправки комментария необходимо войти на сайт.