Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Олимпиадная задача

Помогите решить на с++ шахматная ассоциация выдала своим сотрудникам телефоны, номера на которых можно набирать только ходом коня, причем номер не может начинаться с цифры 8 и 0 7 8 9 4 5 6 1 2 3 0 Вводится число N (1 <= N <= 100), обозначающее длину номера Какое количество разных номеров данной длины можно набрать? Т.е. для N = 3 вариации могут быть такими: 1-6-7 1-6-1 2-7-6 и т.д.


Ответ

Если мне не изменяет логика, то решение должно быть таким. Старался написать максимально компактно, поэтому не во всех местах понятно идею алгоритма. #include "iostream" using namespace std; int main() { char can_go[10][3]={{4,6,-1},{6,8,-1},{7,9,-1},{4,8,-1},{0,3,9},{-1,-1,-1},{0,1,7},{2,6,-1},{1,3,-1},{2,4,-1}}; int end_digits[10]={0,1,1,1,1,1,1,1,0,1},temp[10],s,n,i=0,j,l; for(cin>>n;i0, обходим каждый эллемент can_go[j] и добавляем к эллементу массива temp под номером, равным цифре номера телефона, в которую можем попасть, тоесть can_go[j][l] Переносим массив temp в end_digits Повторяем шаги 2-4 n раз и выводим результат - s

Комментариев нет:

Отправить комментарий