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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
#1

Добавить размеры в код "Обход конем" - C++

15.01.2013, 23:27. Просмотров 1532. Ответов 43
Метки нет (Все метки)

Господа,решила в новой теме попросить помощи.есть код
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <conio.h>
#define  size_row 10
#define  size_col 10
 
 
 
int main(void)
{
    
     int Ni=0; 
     int Nk=300;
     int y=255; 
     int n=253; 
     int s=0; 
     int e=254;
     int i,j;
     int R[size_row][size_col]= {            {s,y,y,y,y,y,y,n,n,n},
                                               {n,y,n,n,n,y,y,n,n,n},
                                                {y,y,n,n,n,y,n,n,n,n},
                                                {y,n,e,y,y,y,n,n,n,n},
                                               {y,y,y,n,n,n,n,n,n,n},
                                            {n,n,n,n,n,n,n,n,n,n},
                                               {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n} };
 
printf("labyrint pered algoritmem::" "\n \n");
   for (i=0; i < size_row; i++)
{
   for (j=0; j < size_col; j++)
   printf("%d\t",R[i][j]);
}
 
/*vlnovy algoritmus*/
while (Ni < Nk)
{
   for (i=0; i < size_row; i++)
   {
     for (j=0; j < size_col; j++)
     /*spousteni*/
     if (R[i][j]==Ni)
     {
         if (R[i][j+1]==255)
            R[i][j+1]=Ni+1;
         if (R[i][j-1]==255)
            R[i][j-1]=Ni+1;
         if (R[i+1][j]==255)
            R[i+1][j]=Ni+1;
         if (R[i-1][j]==255)
            R[i-1][j]=Ni+1;
         if ((R[i+1][j]==254) || (R[i-1][j]==254) || (R[i][j+1]==254) || (R[i][j-1]==254))
         {  
            //printf(
            //getch(); 
            //return 0; 
            //break;
          
         }
      }
   }
Ni++;
}
 
   printf("\n\n");
 
 
printf ("labyrint posle algoritma:: \n \n");
for (i=0; i < size_row; i++)
{
   for (j=0; j < size_col; j++)
   printf("%d\t", R[i][j]);
}
 
   getch();
   return 0;
}
это обход конем по шахматной доске.к нему нужно прилепить следующее:
-размеры шахматной доски.
-координаты конечного поля.
как это воплотить в жизнь?

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 23:27     Добавить размеры в код "Обход конем"
Посмотрите здесь:

C++ "Рекурсивная функция" (Обход бинарного дерева)
C++ предлагаю людям класс "рекурсивный обход матрицы" для решения задач на такую тематику
C++ Обход "End Of File". Работа с файлами
C++ Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9")
C++ Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."?
C++ Задача "Гонки по улицам" (обход ориентированного графа)
Задача "Тур конем" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
25.01.2013, 02:10  [ТС]     Добавить размеры в код "Обход конем" #41
MrGluck, у нас такого разнообразия нет.наверное,считается,что быть специалистом в своем деле-это -цитируя несравненную нашистку- более лучше,чем знать всего понемногу..и я этим довольна.Просто чувствуется,что хочется большего именно в физике.Хотя у нас и так ее много.Вас,я уверена,после окончания ВУЗа будут ценить именно как программиста,а не инженера с предрасположенностью к программированию.Пусть у меня будет одна область,которую я изучу от и до(а это в ядерной физике не так-то просто) и я буду знать,чего стоят мои усилия.Чем больше я знаю,тем выше требования могу задавать.
Не хочу с Вами спорить,все-таки мне кажется ,это очень сильно зависит от специальности.

Добавлено через 1 минуту
Прошу прощения за кривоватые обороты,учусь за границей,отсутствие языковой практики дает о себе знать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
28.01.2013, 16:51  [ТС]     Добавить размеры в код "Обход конем" #42
lemegeton, просмотрите пожалуйста личную почту.
lemegeton
 Аватар для lemegeton
2915 / 1344 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
29.01.2013, 21:23     Добавить размеры в код "Обход конем" #43
Алгоритм рекурсивный.
Заполняем матрицу значениями -1. Количество ходов до начальной точки изначально равно нулю.

Функция заполнения матрицы:
В матрице выбираем переданную точку, если значение в ней -1 или большее, чем переданное количество ходов до начальной точки, записываем туда переданное количество ходов до начальной точки.
Запускаем функцию восемь раз для всех вариантов хода коня, передавая количество ходов до начальной точки + 1.

После выполнения функции получаем матрицу, в которой каждая ячейка содержит количество ходов до начальной точки.

Функция вывода на экран маршрута так же рекурсивна.
Ищется точка, меньшая на единицу чем текущая, выводится на экран, запускается функция для следующей точки. В коде для краткости используется более сложный метод, основанный на том, что булевая дизъюнкция не вычисляется, если первое значение вычисляется в true.

В коде есть вспомогательные функции
createMatrix -- создание матрицы
deleteMatrix -- удаление матрицы
printMatrix -- вывод матрицы на экран.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2013, 19:54     Добавить размеры в код "Обход конем"
Еще ссылки по теме:

Разница между понятиями "Обход в прямом направлении" и "Итерационный прямой обход" C++
Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" C++
Написать код шифрования методом "Змеиный" и "Спиральный" C++
C++ Почему происходит ошибка времени выполнения в решении задачи "Ход конем"?
Error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "SHL" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
30.01.2013, 19:54  [ТС]     Добавить размеры в код "Обход конем" #44
lemegeton, спасибо,удаляюсь.всем добра и денег!
Yandex
Объявления
30.01.2013, 19:54     Добавить размеры в код "Обход конем"
Ответ Создать тему
Опции темы

Текущее время: 07:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru