
Пчёлка Представьте себе пчелиные соты поле из шестиугольных клеток со стороной, состоящей из И
клеток. В верхней левой клетке А находится пчёлка. За один ход она может переползти на клетку вниз, на клетку вниз-вправо или на клетку вверх-вправо (вверх и влево пчёлка не ползает). - Требуется написать программу, которая найдёт количество способов, которыми пчёлка может переместиться из клетки А в противоположную клетку В по указанным правилам. Входные данные: Единственная строка содержит единственное число N - размеры шестиугольного поля (2 ≤ N ≤ 12). Выходные данные: Выведите единственное целое число- количество способов.Примеры Ввод:23Вывод:11291Помогите пожалуйстаПросто этот код не подходит#include <iostream>using namespace std;int main() {int N, m, i, j;cin >> N;m = 2 * N - 1;int fields[m][m];for(i = 0; i < m; i++)for(j = 0; j < m; j++)fields[i][j] = 0;for(i = 0; i < N; i++)fields[i][0] = fields[0][i] = 1;for(i = 1; i < m; i++)for(j = 1; j < m; j++)if(N > abs(i - j))fields[i][j] = fields[i - 1][j] + fields[i][j - 1] + fields[i - 1][j - 1];cout << fields[m - 1][m - 1];return 0;}

Ответы на вопрос

Ответ:#include <iostream>
using namespace std;
int main() {
int N, m, i, j;
cin >> N;
m = 2 * N - 1;
int fields[m][m];
for (i = 0; i < m; i++) {
for (j = 0; j < m; j++) {
fields[i][j] = 0;
}
}
for (i = 0; i < N; i++) {
fields[i][0] = fields[0][i] = 1;
}
for (i = 1; i < m; i++) {
for (j = 1; j < m; j++) {
if (N > abs(i - j)) {
fields[i][j] = fields[i - 1][j] + fields[i][j - 1] + fields[i - 1][j - 1];
}
}
}
cout << fields[m - 1][m - 1] << endl;
return 0;
}



Ваш код близок к решению, но для корректной работы вам нужно учесть особенности шестиугольного поля и изменить его немного. Вот исправленная версия вашей программы:
cpp#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
// Размер шестиугольного поля
int size = 2 * N - 1;
// Создаем двумерный массив для хранения количества способов
long long ways[size][size];
// Инициализируем массив нулями
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
ways[i][j] = 0;
}
}
// Начальная клетка с пчелкой
ways[0][0] = 1;
// Заполняем массив способов
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (i - 1 >= 0) {
ways[i][j] += ways[i - 1][j]; // Движение вниз
}
if (i - 1 >= 0 && j + 1 < size) {
ways[i][j] += ways[i - 1][j + 1]; // Движение вниз-вправо
}
if (j - 1 >= 0) {
ways[i][j] += ways[i][j - 1]; // Движение влево
}
}
}
// Ответ - количество способов в противоположной клетке
cout << ways[size - 1][size / 2];
return 0;
}
Этот код должен правильно рассчитывать количество способов, которыми пчёлка может переместиться из клетки А в противоположную клетку В на шестиугольном поле.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili