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

Волновой алгоритм - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.69
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 21:34     Волновой алгоритм #1
Подскажите пожалуйста, на сколько сложно изготовить из матрицы
C++
1
2
3
0000
0000
0000
напр.
C++
1
2
3
4
4345
3234
2123
3234
Только при помощи обычных циклов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 21:34     Волновой алгоритм
Посмотрите здесь:

C++ Волновой алгоритм
C++ Волновой алгоритм (шахматы, конь)
C++ Волновой алгоритм
Волновой алгоритм поиска пути C++
Волновой алгоритм для двумерной матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cyberdiem
 Аватар для cyberdiem
74 / 25 / 1
Регистрация: 15.02.2012
Сообщений: 97
12.02.2013, 21:58     Волновой алгоритм #2
Понятней формулируй задачу. А то какой вопрос - такой и ответ получишь. Я тоже могу спросить сколько весит розовый слон в нанометрах.
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 22:06  [ТС]     Волновой алгоритм #3
Собственно уточню есть матрица 0 4x4, ее эл-т а[2][1], присвоить эл-там матрицы значения волновым "способом" как написано в 1м посте. И реализовать это при помощи операторов ветвления и циклов while, for.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 22:12     Волновой алгоритм #4
Ну в зависимости от вашего опыта и знаний будет зависит сложность.
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 22:44  [ТС]     Волновой алгоритм #5
C++
1
2
for(j=1;j<4;j++)
a[2][j]=j;
Так же влево, вверх вниз, но как быть с поворотами.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 22:53     Волновой алгоритм #6
эммм не получится такая штука. Лично судя по этому нет. Тут надо брать элемент, и смотреть соседние, или хранить предыдущий.

Добавлено через 2 минуты
Ну точно не так линейно.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 22:57     Волновой алгоритм #7
Цитата Сообщение от Wolkodav Посмотреть сообщение
Ну точно не так линейно.
Да ну?
C++
1
2
3
4
5
int x = 2, y = 1;
 
for (int i = 0; i < 4; i++)
  for (int j = 0; j < 4; j++)
    a[i][j] = abs(i - x) + abs(j - y) + 1;
cyberdiem
 Аватар для cyberdiem
74 / 25 / 1
Регистрация: 15.02.2012
Сообщений: 97
12.02.2013, 23:04     Волновой алгоритм #8
Куда же канули те времена, когда мы задумывались об экономии памяти? Да здравствуют полные переборы. Это печально.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:10     Волновой алгоритм #9
cyberdiem, НЛО прилетело сюда и оставило тут эту запись?
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 23:11     Волновой алгоритм #10
Цитата Сообщение от Valli1 Посмотреть сообщение
Код C++
for(j=1;j<4;j++)
a[2][j]=j;
iama, сравните и ваше, по мне достаточно разные вещи.
cyberdiem
 Аватар для cyberdiem
74 / 25 / 1
Регистрация: 15.02.2012
Сообщений: 97
12.02.2013, 23:14     Волновой алгоритм #11
iama, "эту" понятие растяжимое на 8 постов. Вопрос некорректен.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:14     Волновой алгоритм #12
Wolkodav, вы, похоже, имели в виду, что нужно писать что-то похожее на обход в ширину, разве не так?
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 23:20     Волновой алгоритм #13
iama, примерно
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:22     Волновой алгоритм #14
Wolkodav, а я всего-то хотел сказать, что можно сделать всё много проще и довольно линейно.
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 23:28  [ТС]     Волновой алгоритм #15
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
#include <iostream>
const int n=4;
void r(int (*a)[4],int n);
int main(){
int a[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
r(a,n);
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
std::cout<<a[i][j]<<' ';}
std::cout<<'\n';}
system("pause");
return 0;
}
void r(int (*a)[4],int n){
for(int i=2,k=1;i<4;i++){
for(int j=1;j<4;j++){
a[i][j]=k;k++;}k=2;}
for(int i=2,k=1;i<4;i++){
for(int j=1;j>=0;j--){
a[i][j]=k;k++;}k=2;}
for(int i=1,k=2;i>=0;i--){
for(int j=1;j<4;j++){
a[i][j]=k;k++;}k=3;}
for(int i=1,k=2;i>=0;i--){
for(int j=1;j>=0;j--){
a[i][j]=k;k++;}k=3;}
 
}
Для конкретных координат вот так. Но хотелось бы для универсальных.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:30     Волновой алгоритм #16
Valli1, вы меня, конечно, простите, все мы когда-то начинали, но нельзя же такое людям показывать!
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 23:35  [ТС]     Волновой алгоритм #17
Wolkodav, а я всего-то хотел сказать, что можно сделать всё много проще и довольно линейно.
Проще мне не надо. Нужно именно волновое заполнение."Мы легких путей не ищем"(с)
Какое такое, что бы вы посоветовали?Я конечно понимаю Вашу иронию Вы бы в 2 строчки решили. Все работает, немного его обобщить можно.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:41     Волновой алгоритм #18
Valli1, у вас на то, что вы называете "волновым алгоритмом" тоже совершенно непохоже.

Для начала почитайте про обход в ширину, раз именно это вам нужно.
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
12.02.2013, 23:48  [ТС]     Волновой алгоритм #19
Цитата Сообщение от iama Посмотреть сообщение
Valli1, у вас на то, что вы называете "волновым алгоритмом" тоже совершенно непохоже.

Для начала почитайте про обход в ширину, раз именно это вам нужно.
Но там vector и прочее, чего я еще не знаю. Наверняка все можно заполнить вообще одной функцией.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 23:49     Волновой алгоритм
Еще ссылки по теме:

Волновой алгоритм C++
C++ Волновой алгоритм
C++ Лабиринт - волновой алгоритм

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

Или воспользуйтесь поиском по форуму:
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:49     Волновой алгоритм #20
Valli1, для начала нужно уметь писать очередь. Умеете?
Yandex
Объявления
12.02.2013, 23:49     Волновой алгоритм
Ответ Создать тему
Опции темы

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