Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 26.04.2009
Сообщений: 17

Предложить алгоритм, позволяющий найти маршрут из клетки (1,1) в клетку (N,N)

26.04.2009, 16:14. Показов 2474. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В таблице размером N*N, где N<13, клетки заполнены случайным образом цифрами от 0 до 9. Предложить алгоритм, позволяющий найти маршрут из клетки (1,1) в клетку (N,N) и удовлетворяющий следующим условиям:*
1. любые две последовательные клетки в маршруте имеют общую сторону;
2. количество клеток маршрута минимально;
3. сумма цифр в клетках маршрута максимальна.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2009, 16:14
Ответы с готовыми решениями:

В таблице клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N)
В таблице NхN, клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N) такой, что: 1) он...

Найти маршрут из клетки (1, 1) в клетку (N, N)
В таблице размером N*N, где N&lt;13, клетки заполнены случайным образом цифрами от 0 до 9. Предложить алгоритм, позволяющий найти маршрут из...

Составьте маршрут шахматного коня из клетки (0; 0) в заданную клетку (x; y) в космических шахматах
В космические шахматы играют на бесконечной доске, поэтому клетки нумеруют парой чисел (см. пример и рисунок к нему). Фигуры ходят по...

1
138 / 138 / 65
Регистрация: 20.03.2009
Сообщений: 235
26.04.2009, 17:04
Лучший ответ Сообщение было отмечено nona как решение

Решение

код не мой, мб чем-то поможет:

Pascal
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
program Pr_3;
 
uses crt;
 
type matrix = array [1..14,1..14] of integer;
 
var
 i,k,j,N,p:byte;
 A,B,u:matrix;
 C:array[1..26,1..2] of integer;
 
{----- нахождение максимального числа из двух ---}
 
function max(A1,A2:integer; var p:byte):integer;
 var
  d:integer;
 begin
  if A1>A2 then d:=A1
   else
    begin
      d:=A2;
      p:=1;
    end;
  max:=d;
 end;
 
{----- вывод первоначальной таблицы на экран -------}
 
procedure vivod(D:matrix);
var i,j:byte;
  begin
    for i:= 1 to N do
     begin
      for j:= 1 to N do
       Write('  ',D[i,j]);
      WriteLn;
     end;
  end;
 
{----- вывод маршрута на экран -------}
 
procedure vivodB(D:matrix);
var i,j:byte;
    h:string;
  begin
    for i:= 1 to N do
     begin
      for j:= 1 to N do
         begin
           case D[i,j] of      {для более наглядного изображения}
            10..99: h:=' ';
            100..999: h:='';
            else  h:='  ';
           end;                                    {вывод самого маршрута}
           if (u[i,j+1]=1) and (j<N) then Write(' ',D[i,j],h,'-') {при переходе между столбцами}
             else Write(' ',D[i,j],h,' ');
         end;
      WriteLn;
      for j:= 1 to N do
        if (u[i+1,j]=0) and (i<N) then Write(' |   ') {при переходе с одной строки на другую}
           else Write('     ');
      WriteLn;
     end;
  end;
 
 
BEGIN
 clrscr;
 repeat               { задаем число N }
  Write('  Введите размерность матрицы (1 - 13): ');
  ReadLn(N);
 until (N<=13) and (N>=1);
 
 randomize;
 
 for i:= 1 to N do    { формирование первоначальной мартицы }
  for j:= 1 to N do
   A[i,j]:=random(10);
 
 writeln;
 writeln(' Первоначальная матрица:');
 writeln;
 vivod(A);    {вывод этой матрицы}
 
 B[1,1]:=A[1,1];    {В - матрица, где храниться максимальная сумма,
                    которую можно получить дойдя от (1.1) до данной ячейки}
 u[1,1]:=0;         {U - матрица, где храниться значение как мы попали в ячейку В:
                    0 -  двигались из соседней сверху ячейки,
                    1 -  двигались из соседней слева ячейки}
 
 for i:=2 to N do   {заполнение первой строки и первого столбца}
  begin             {мы можем двигаться только в одном направлении}
   B[1,i]:=A[1,i]+B[1,i-1];
   u[1,i]:=1;
   B[i,1]:=A[i,1]+B[i-1,1];
   u[i,1]:=0;
  end;
 
  for i:= 2 to N do    {заполнение матрицы В и U}
    for j:= 2 to N do
      begin
       p:=0;
       B[i,j]:=A[i,j]+max(B[i-1,j],B[i,j-1],p);
       u[i,j]:=p;
      end;
 
 WriteLn;
 WriteLn(' Максимальная сумма в каждой ячейке, которую можно получить дойдя до нее,');
 Writeln(' и путь получения этой суммы:');
 writeln;
 vivodB(B);           {вывод значений В и пути заполнения В}
 
 i:=N;
 k:=N;
 j:=2*N-1;  {минимальное количество точек}
 C[1,1]:=1;  {G - координаты маршрута пути}
 C[1,2]:=1;  {первоначальная точка (1.1)}
 
 while (i<>1) or (k<>1) do {заполнение C, начиная с последней точки }
  begin
   C[j,1]:=i;
   C[j,2]:=k;
   if i=1 then Dec(k) {если первая строчка, то идем по столбцам}
          else
            if k=1 then Dec(i) {если первый столбец, то идем по строчкам}
                   else
                    if max(b[i-1,k],b[i,k-1],p)=b[i,k-1] then Dec(k) {если максимальное число слева, то идем по строчке}
                                                         else Dec(i);{иначе идем по столбцу}
   Dec(j);
  end;
 
 for i:= 1 to N do {"обнуление" матрицы U}
  for j:= 1 to N do
   u[i,j]:=3;
 
 for i:=1 to 2*N-1 do {заполнение пути следования}
  if C[i,1]=C[i+1,1] then u[C[i,1],C[i,2]+1]:=1 {если одинаковый индекс строки, то 1}
    else u[C[i,1]+1,C[i,2]]:=0;{если одинаковый индекс столбца, то 0}
 
 WriteLn;
 writeln(' Путь следования в матрице:');
 WriteLn;
 vivodB(A);{вывод первоначальной матрицы с маршрутом следования}
 
 WriteLn;
 write(' Сам маршрут: ');
 Write(C[1,1],',',C[1,2]);
 for i:=2 to 2*N-1 do
  Write(' -> ',C[i,1],',',C[i,2]);
 
 ReadKey;
end.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2009, 17:04
Помогаю со студенческими работами здесь

В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N), чтобы...

Какую наибольшую стоимость может иметь путь из клетки (1, 1) в клетку (n, m), если передвигаться за 1 шаг можно только на правую или нижнюю клетку.
кому не трудно помогите сделать. если не трудно вам написать код. Дана прямоугольная таблица nxn клеток. В каждой клетке содержится...

Найти такой путь из клетки (1,1) в клетку (А, В), чтобы сумма чисел равнялась заданному числу К
Помогите написать программу к задаче Дано шахматную доску размером М на N. Шахматная фигура &quot;мини-тура&quot; может перемещаться...

Найти такой путь из клетки [i1, j1] в клетку [i2, j2], чтобы сумма чисел по данному пути была минимальной
Здравствуйте, есть такая задача: 1.Дан двумерный числовой массив размером N1xN2. 2.Найти такой путь из клетки в клетку , чтобы...

Найти путь из клетки (1, 1) в клетку (N, N), чтобы сумма цифр в клетках, через которые он пролегает, была минимальной
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N), чтобы...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru