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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
15.01.2013, 23:27     Добавить размеры в код "Обход конем" #1
Господа,решила в новой теме попросить помощи.есть код
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;
}
это обход конем по шахматной доске.к нему нужно прилепить следующее:
-размеры шахматной доски.
-координаты конечного поля.
как это воплотить в жизнь?

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Катерька
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
2909 / 1338 / 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++

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

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

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