Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти все равновеликие прямоугольники, стороны которых выражены целыми числами a и b, а площадь равна S https://www.cyberforum.ru/ cpp-beginners/ thread1208721.html
Дано натуральное число. Найти все равновеликие прямоугольники, стороны которых выражены целыми числами a и b, а площадь ровна S( a и b принадлежат интервалу от 1 до 20, а S вводится с клавиатуры
C++ Найти сумму и количество нечетных делителей натурального числа
Дано натуральное число. найти сумму и количество нечетных делителей натурального числа
C++ Ввод функции через консоль Добрый день, уважаемые программисты! Я недавно начал изучать программирование и походу изучения у меня в голове возникла нестандартная , наверное, задача (а возможно и бессмысленная): Реализовать такую программу , которая считывает с консоли или с файла (напр. текстового , это не суть) некоторую функцию (которая задана без ошибок , например - 4*x*x+12+3*x), создает (или вписывает во... https://www.cyberforum.ru/ cpp-beginners/ thread1208714.html C++ Помогите написать одну из следующих программ https://www.cyberforum.ru/ cpp-beginners/ thread1208709.html
1. Решение уравнений в целых числах. 2. Египетское умножение. 3. Каноническое представление чисел. 4. Простота чисел. 5. Задача разделения секрета. При написании программы предлагается использовать (на выбор, по желанию разработчика) один из следующих способов работы с «большими» числами: 1. Разработка собственной модели «большого» числа и собственных алгоритмов элементарных арифметических...
C++ Найти в символьном массиве трёхзначные числа
Дали задание на практике. В нём надо прочесть из файла символьный массив и найти количество трёхзначных чисел в нём. Если количество нечётно - вывести на экран массив в обратном порядке. И в этом нахождении трёхзначных чисел основная проблема: я даже не представляю, как это делать. Нам такое не читали, а задание дали. Кто-нибудь, хоть подайте идею, как это сделать. Заранее спасибо
C++ Очистка массива https://www.cyberforum.ru/ cpp-beginners/ thread1208699.html
Помогите сделать очистку массива {AnsiString E; int n; int k; AnsiString **m; m= new AnsiString *; n=StringGrid1->RowCount; E=Edit11->Text; for(int i=0; i<n; i++) {m=new AnsiString ;
C++ Расставить звездочки в строке есть код: #include <iostream> #include <conio.h> #include <stdio.h> #include <cmath> #include <locale.h> using namespace std; void sort(char *asd, int P) { https://www.cyberforum.ru/ cpp-beginners/ thread1208686.html Иерархия классов. Минералы C++
Здравствуйте))пишу курсовую на данную тему) Хотела бы попросить совета у вас...иерархию составить составила..а вот реализация...что именно будет делать программа?Или может мне убрать пару классов..чтобы не было так громоздко.. Классы я уже расписала все и в заголовочных и в cpp-шных файлах. Есть идея создать в каждом классе по объекту и проверять их на "совместимость" т.е может ли что-нибудь...
C++ базовый класс строки https://www.cyberforum.ru/ cpp-beginners/ thread1208677.html
Есть код: #ifndef MYSTRING_H #define MYSTRING_H class mystring //базовый класс строки { protected: char *p; // Указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки
C++ Перестановка элементов вектора Задан вектор A={A,A,.....,A} Все элементы, которые не равны нулю, переместите в начало вектора, сохраняя их порядок, а равные нулю - в конец (запрещено пользоваться вспомогательным вектором). https://www.cyberforum.ru/ cpp-beginners/ thread1208670.html
C++ структурный тип
помогите сделать лабораторную работу по с++, пожалуйста. Определить структурный тип содержащий следующую информацию: Фио, должность, стаж работы, оклад, премия Ввести пять элементов данного типа. Распечатать информацию в табличном виде. Подсчитать каждому сотруднику сумму к выдаче, среднюю з/пл по всем сотрудникам и найти у кого самый большой оклад.
C++ Написать функцию, получающую часы, минуты, секунды, и возвращающую сколько секунд прошло с полудня https://www.cyberforum.ru/ cpp-beginners/ thread1208659.html
привет все на форуме. я новичок в с++ поэтому нужна ваша помощь в написании программки:) Написать функцию, которая получает время в качестве 3 целых значений (часы, минуты, секунды) и возвращает число секунд с момента, когда часы «пробили 12». Исходные значения передаются во внешнюю функцию из главной функции. Результат работы функции возвращается в главную функцию. Результаты заполнения...
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
16.06.2014, 12:19 0

Движение по шахматной доске коня (с левого нижнего угла в верхний правый угол) - C++ - Ответ 6324196

16.06.2014, 12:19. Показов 16257. Ответов 28
Метки (Все метки)

Ответ

этот решение называется "метод динамического программирования"

C++ (Qt)
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
43
44
45
46
47
48
49
#include <iostream>
 
using namespace std;
 
const int dxh[] = {-2, -2, 2, 2, -1, -1, 1, 1};
const int dyh[] = {-1, 1, -1, 1, -2, 2, -2, 2};
 
bool in(int i, int j, int n, int m)
{
    return i >= 1 && i <= n && j >= 1 && j <= m;
}
 
int dp[11][11][11];
//dp[cnt][i][j] == количество способов добраться до клетки (i, j) ровно за cnt шагов
 
int main()
{
    int n, k;
    cin >> n >> k;
    //количство способв добраться до левой нижней клетки сделав о ходов равно 1
    dp[0][n][1] = 1;
 
    for(int cnt = 0; cnt < k; cnt++)
    {
        //перебрали, сколько шагов сделали
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
            {
                //перебрали клетку в которой стоим
                for(int dir = 0; dir < 8; dir++)
                {
                    //перебрали ход(их 8 штук и они занесены в константу массив где dxh - смещение по строке, dyh - смещение по столбцу
                    int ni = i + dxh[dir];
                    int nj = j + dyh[dir];
                    //теперь (ni, nj) - координаты клетки в которую мы прыгнем
                    //проверка на то, что мы не вышли за пределы доски с помощью функции
                    if(in(ni, nj, n, n))
                    {
                        //вот мы знаем что до клетки (i, j) за cnt шагов можно добраться dp[cnt][i][j] способами
                        //значит до клетки (ni, nj) за cnt + 1 шаг надо увеличить на dp[cnt][i][j]
                        dp[cnt + 1][ni][nj] += dp[cnt][i][j];
                    }
                }
            }
    }
 
    cout << dp[k][1][n] << endl;
    return 0;
}


Вернуться к обсуждению:
Движение по шахматной доске коня (с левого нижнего угла в верхний правый угол) C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2014, 12:19
Готовые ответы и решения:

Переместить короля из левого нижнего угла в правый верхний с наименьшей стоимостью прохода
(очень важно использовать динам. программирование(память не превышающая 64 мегабайт)) На каждой...

Проведите звездочки по диагонали из нижнего левого угла в верхний правый
Проведите звездочки по диагонали из нижнего левого угла в верхний правый

Проведите звездочки по диагонали из нижнего левого угла в верхний правый
18. Проведите звездочки по диагонали из нижнего левого угла в верхний правый.

Изобразить шарик двигающийся из левого верхнего угла экрана в правый верхний угол
1.изобразить шарик двигающийся из левого верхнего угла экрана в правый верхний угол; 2.Изобразить...

28
16.06.2014, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2014, 12:19
Помогаю со студенческими работами здесь

Записать программу, имитирующую движение красного шара по экрану с левого угла в правый угол
Здравствуйте, нужна ваша помощь в пяти различных заданиях по турбо паскалю, буду премного...

Перейти из левого нижнего в правый верхний угол массива, двигаясь вверх либо вбок, суммируя элементы через которые идем. Сумма должна быть минимальной
Помогите составить алгоритм реализации такой программы. Например, есть массив: 1 2 5 7 9 4 6 8 2...

Движение коня по всей шахматной доске
Помогите написать программу пожалуйста. Такое задание: Написать программу,демонстрирующую решение...

Движение слова с нижнего правого угла в левый верхний
Нужно чтобы слово двигалось с с нижнего правого угла в левый верхний. Program z_24; uses crt;...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru