Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Поле в игре «Речной бой» представляет собой полоску длины n клеток и шириной в одну клетку. Где-то на поле расположен корабль из k клеток (k < n). Какое наименьшее число выстрелов необходимо, чтобы гарантированно потопить корабль? После каждого выстрела сообщается его результат: «мимо», «ранен» или «убит».
Arnfinn ответил на вопрос 24.10.2023
1 Ответ
- #include <iostream>
- #include <vector>
- using namespace std;
- int main()
- {
- int n; cin >> n;
- vector<int> a(n);
- vector<vector<int>> b = { {1, 2, 4, 6, 8, 9}, {3, 4, 8}, {1, 4, 7, 9}, {1, 3, 5, 7}, {2, 4, 5, 8}, {1, 2, 5, 8, 9}, {3, 5, 6, 8, 9}, {1, 3, 6}, {1, 2, 4, 5, 6, 8, 9}, {1, 2, 4, 5, 7} };
- vector<int> c(10);
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- for (int j = 0; j < b[a[i]].size(); j++) {
- c[b[a[i]][j]] = 1;
- }
- }
- for (int i = 0; i < 10; i++) {
- bool ok = true;
- for (int j = 0; j < b[i].size(); j++) {
- if (!c[b[i][j]]) ok = false;
- }
- if (ok) cout << i << ‘\n‘;
- }
- return 0;
- }
Arnfinn ответил на вопрос 24.10.2023