Форум программистов, компьютерный форум CyberForum.ru

Нужно разобрать код хода коня на шахматной доске - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение пути к папке с файлом http://www.cyberforum.ru/cpp-beginners/thread1626996.html
Есть запускаемый бинарник. Есть задача - запустить файл .wav, лежащий в той же папке, что и запускаемый бинарник. Как это сделать максимально просто и быстро, не зная пути к папке, и возможно, сменяя этот путь - мне нужно, чтобы все работало и на другом диске, и на другой папке?
C++ Поиск подстроки минимальной длины в строке (файловый ввод/вывод) Задача I. Рефераты Имя входного файла: input.txt или стандартный поток ввода Имя выходного файла: output.txt или стандартный поток вывода Ограничение по времени: 3 секунды Ограничение по памяти: 512 мегабайт Флорен и её друзьям на уроке английского поручили подготовить рефераты по предоставлен- ным статьям — каждому ученику была выдана отдельная статья, по которой он должен сделать... http://www.cyberforum.ru/cpp-beginners/thread1626990.html
C++ Компилятор ругается на fopen
#include<iostream> #include<stdio.h> #include <string.h> #define MAX 50 using namespace std; // Приоритет операций int prioritet(char var) {
C++ Как реализовать поиск значения,которое находится в стеке?
нужно найти значение.Значение находится в стеке.Как реализовать поиск? Пробовал через массив сделать что-то не получается вот код #include "stdafx.h" #include <stdlib.h> #include <string.h> #include <conio.h> #include <stdio.h> #include <iostream> #define ERROR_OPEN_FILE -3
C++ Ошибка "Expression expected" http://www.cyberforum.ru/cpp-beginners/thread1626963.html
#pragma hdrstop #pragma argsused #ifdef _WIN32 #include <tchar.h> #else typedef char _TCHAR; #define _tmain main #endif #include <iostream>
C++ Конвертировать двухбайтовую строку в однобайтовую Как перевести без потери данных? Из wchar_t wPass В byte bPass Подсказали так: std::copy(wPass, 256, reinterpret_cast<WCHAR *>(bPass)); Не работает... подробнее

Показать сообщение отдельно
DaddySam22
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 9

Нужно разобрать код хода коня на шахматной доске - C++

28.12.2015, 16:22. Просмотров 237. Ответов 0
Метки (Все метки)

Есть задча: На шахматной доске NxN в клетке (x1, y1) стоит голодный шахматный конь. Он хочет попасть в клетку (x2, y2), где растет вкусная шахматная трава. Какое наименьшее количество ходов он должен для этого сделать?

Входные данные
На вход программы поступает пять чисел: N, x1, y1, x2, y2 (5 <= N <= 20, 1 <= x1, y1, x2, y2 <= N). Левая верхняя клетка доски имеет координаты (1, 1), правая нижняя - (N, N).

Выходные данные
В первой строке выведите единственное число K - наименьшее необходимое число ходов коня. В каждой из следующих K+1 строк должно быть записано 2 числа - координаты очередной клетки в пути коня.

Помогите разобрать найденный код,если можно,то описание того, что происходит в каждой строке

C++
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
#include <iostream>
using namespace std;
 
typedef struct {int x; int y; int p;} step;
 
void show(step *sts, int i) {
    if (i>0) {show(sts, sts[i].p); cout<<sts[i].x<<" "<<sts[i].y<<'\n';}}
 
int main() {
    const int N=20, dx[]={1,2,2,1,-1,-2,-2,-1}, dy[]={2,1,-1,-2,-2,-1,1,2};
    int w[N+1][N+1]={0,}, b=0, e=0, isolve=0, added=0, cnt=0;   
    step sts[N*N]; sts->p=-1; 
    int n, x2, y2; cin >> n >> sts->x >> sts->y >> x2 >> y2;
   
    do {added=0; int ic=e+1;
        for (int i=b; i<=e && !isolve; ++i)
        for (int j=0; j<8; ++j) {
            int x = sts[i].x + dx[j], y = sts[i].y + dy[j];
            if (x<1 || y<1 || x>n || y>n || w[x][y]) continue;
            
            w[x][y]++; added=1;
            step *s=sts+(ic++); s->x=x; s->y=y; s->p=i;
            if (x==x2 && y==y2) {isolve=ic-1; break;}
        }
        cnt++; b=e+1; e=ic-1;
    } while (!isolve && added);
    
    if (isolve) cout<<cnt<<'\n'; else cout<<"no solutions\n";
    show(sts, isolve);
}
Добавлено через 21 час 40 минут
Люди,помогите,очень срочно надо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru