Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
1

Реализовать алгоритм передвижения туриста по городам

09.06.2016, 21:56. Просмотров 1355. Ответов 21

Добрый день ребята программисты!

Я сегодня хочу обратится к вам за помощь в одной задачи!

Предположим что это фотография изображает карту одного континента!!

Название: Снимок.PNG
Просмотров: 63

Размер: 6.3 Кб

Чёрные полные точки обозначают что там был зарегистрирован один город!!!

По координатами (3,2) можно заметить небольшой круг - в этой точки замечен турист. Его цель дойти до конца континента но при этом он должен посетить наибольшое количество городов!!! Он может двигаться строго по горизонтали, вертикали и по диагонали!!!

У меня это карта была зарегистрирована в один массив!
Размеры этого массива были назначены в n, m;
Он примерно выглядит вот так ->
Код
1 0 0 0 0 0 0 0 1 0 
0 0 0 0 0 0 1 0 0 0 
0 0 1 0 1 0 0 0 0 0 
0 0 0 0 0 0 0 1 0 0 
0 0 0 0 0 1 0 0 0 0
где 1 обозначает что там был зарегистрирован город а 0 значит что там "чистое поле"!

Не знаю как этот алгоритм "забабахать", кто может помогите!!!

Я буду рад даже простому алгоритму действий!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2016, 21:56
Ответы с готовыми решениями:

Алгоритм передвижения монстров в игре
Доброго времени суток и спасибо ,что ,по крайней мере, обратили внимание на сообщение:yahoo: ...

Алгоритм передвижения по окружности
Всем привет, подскажите пожалуйста алгоритм передвижения по окружности, очень туплю не первый час(...

Структурный алгоритм для передвижения тензометрической платформы
Здравствуйте! Мне необходимо написать подробный алгоритм для формирования направления движения...

Алгоритм передвижения тележки в ALPHA XL Mitsubishi Electric
Доброго дня всем! ...

21
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
09.06.2016, 22:23 2
Цитата Сообщение от hackerbank Посмотреть сообщение
и по диагонали!!!
По диагонали квадрата имеется в виду?
Цитата Сообщение от hackerbank Посмотреть сообщение
Не знаю как этот алгоритм "забабахать"
Ну, если не требуется, чтобы путь был кратчайшим, то города просто по очереди можно обходить.
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
09.06.2016, 22:38  [ТС] 3
Цитата Сообщение от Mr.X Посмотреть сообщение
По диагонали квадрата имеется в виду?
Посмотрите на пример!! (изображение) линия обозначает его путь

Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, если не требуется, чтобы путь был кратчайшим, то города просто по очереди можно обходить.
я не очень понял что вы имеете в виду но скажу вам что он может двигаться только в одном направлении , по идеи я должен пройти все возможные пути и когда я натыкаюсь на город я должен прибавить одной переменной +1
потом найти найбольшое значение из этой переменной

но я не знаю как всё это сделать
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
09.06.2016, 22:57 4
Цитата Сообщение от hackerbank Посмотреть сообщение
я не очень понял что вы имеете в виду
Тоже ни хрена не понял из вашего объяснения. Если вы где-то прочитали эту задачу, то процитируйте ее, если же сами придумали, то, я думаю, понять вашу мысль у нас маловато шансов.
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
09.06.2016, 23:01  [ТС] 5
Цитата Сообщение от Mr.X Посмотреть сообщение
Если вы где-то прочитали эту задачу, то процитируйте ее
Мне эту задачу задали в колледже!!!
Цитата Сообщение от Mr.X Посмотреть сообщение
Тоже ни хрена не понял из вашего объяснения
Что именно вы не поняли я могу объяснить !!!
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
09.06.2016, 23:03 6
Цитата Сообщение от hackerbank Посмотреть сообщение
Что именно вы не поняли я могу объяснить !!!
Ладно, проехали!
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
09.06.2016, 23:08  [ТС] 7
мне серьезно нужно решить эту чёртовую задачку!!! мне она тоже не нравится!!! я нуждаюсь в любой помощи даже в самой малюсенькой!!! если что-то не ясно я могу пояснить!!

Не по теме:

извиняюсь за свою настойчивость

0
18 / 17 / 22
Регистрация: 03.05.2016
Сообщений: 105
10.06.2016, 02:19 8
1. То есть координаты, где находится турист мы вводим с клавиатуры?
2. Направление может быть скажем на 3 ячейки вперед и 1 наверх, главное что прямая, так?
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
10.06.2016, 12:56  [ТС] 9
Hilarior,
Цитата Сообщение от Hilarior Посмотреть сообщение
1. То есть координаты, где находится турист мы вводим с клавиатуры?
Правильно !! они должны считаться с клавиатуры
Цитата Сообщение от Hilarior Посмотреть сообщение
2. Направление может быть скажем на 3 ячейки вперед и 1 наверх, главное что прямая, так?
Верно это для примера!!Но турист может двигаться в любую сторону, главное чтобы была прямая дорога, и чтобы он посетил как можно больше городов

Добавлено через 5 часов 45 минут
Хоть кто нибудь помогите пожалуйста!
0
231 / 97 / 27
Регистрация: 20.03.2014
Сообщений: 304
10.06.2016, 13:14 10
hackerbank, строите уравнения прямых для всех точек у которых координаты по Х больше, чем у туриста, и считаете сколько точек попадает в каждую (если при построении уравнения получилось полученное ранее уравнение, то просто инкрементируете счетчик входящих в уравнение точек).
1
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
10.06.2016, 13:26  [ТС] 11
UltraPenguin, вам не трудно организовать алгоритм, потому что я не очень понимаю русский язык!!! , и не понял что вы имеете в виду
0
egor2116
10.06.2016, 14:22
  #12

Не по теме:

Добрый день ребята программисты!

Я сегодня хочу обратится к вам
Прочитав эти строки, сразу возникло две мысли
1. Продолжение будет таким: "мы сами не местные ......"
2. Вы верите в бога ? ....

0
hackerbank
10.06.2016, 14:28  [ТС]
  #13

Не по теме:


Цитата Сообщение от egor2116 Посмотреть сообщение
1. Продолжение будет таким: "мы сами не местные ......
блин я понимаю и вас, я так нагло хочу заполучить ответ что даже не задумываюсь о чём пишу!
но поймите и меня для меня решение этой задачи это зелёный путь к новом учебном году в колледже!

Цитата Сообщение от egor2116 Посмотреть сообщение
Вы верите в бога ? ....
какое это имеет значение?? если я вам отвечу, что произойдёт?

0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
10.06.2016, 14:30 14
Его цель дойти до конца континента но при этом он должен посетить наибольшое количество городов!
По моему тут нужен граф и эйлеров цикл.
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
10.06.2016, 14:31  [ТС] 15
Цитата Сообщение от egor2116 Посмотреть сообщение
По моему тут нужен граф и эйлеров цикл.
можете просветить? что за граф? что за цикл странный?

Добавлено через 13 секунд
нет не вы



P.S не будут проблемы если я использую c++ builder?
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
10.06.2016, 14:35 16
можете просветить? что за граф? что за цикл странный?
Он тут не подойдет судя из вашего коментария
Но турист может двигаться в любую сторону, главное чтобы была прямая дорога, и чтобы он посетил как можно больше городов
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
10.06.2016, 14:36  [ТС] 17
Цитата Сообщение от egor2116 Посмотреть сообщение
Он тут не подойдет судя из вашего коментария
ну ок спасибо за содействие!!!
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
10.06.2016, 14:36 18
сейчас подумаем
0
-2 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 44
10.06.2016, 15:47  [ТС] 19
ок жду ваших ответов!!!
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
10.06.2016, 16:02 20
Лучший ответ Сообщение было отмечено hackerbank как решение

Решение

Я буду рад даже простому алгоритму действий!!!
Наверное можно как то так. Допишите для движения вверх-лево, вверх-правво, вниз-лево, вниз-право и вівод результата на экран
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
79
80
81
82
83
84
85
#include<iostream>
 
struct Turist{
    int x;
    int y;
};
 
int main()
{
    const size_t WIDTH = 10;
    const size_t HEIGHT = 5;
    Turist start, currentPosition;
    start.y = 3;
    start.x = 2;
    const size_t DIRECT = 8;
    size_t result[DIRECT] = {0}; //left = 0, right = 1, top = 2, down = 3, top_left = 4, top_right = 5, down_left = 6, down_right = 7;
    size_t equil = 0;
    size_t direct = -1;
    currentPosition = start;
    int map[HEIGHT][WIDTH] = {{1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, 
                                                      {0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, 
                                                      {0, 0, 1, 0, 1, 0, 0, 0, 0, 0},
                                                      {0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, 
                                                      {0, 0, 0, 0, 0, 1, 0, 0, 0, 0}}; 
                                                      
 
    for(size_t i = 0; i < WIDTH; ++i){ // width > height
                if(currentPosition.x >= 0){ // left
                    result[0] += map[currentPosition.y][--currentPosition.x];
                }
    }
    currentPosition = start;
    for(size_t i = 0; i < WIDTH; ++i){ // width > height
                if(currentPosition.x < WIDTH){ // right
                    result[1] += map[currentPosition.y][++currentPosition.x];
                }
 }
    currentPosition = start;
    for(size_t i = 0; i < HEIGHT; ++i){ // width > height
                if(currentPosition.y >= 0){ // top
                    result[2] += map[--currentPosition.y][currentPosition.x];
                }
 }
 currentPosition = start;
    for(size_t i = 0; i < HEIGHT; ++i){ // width > height
                if(currentPosition.y < HEIGHT - 1){ // down
                    result[3] += map[++currentPosition.y][currentPosition.x];
                    std::cout << "3-"<< result[3] << std::endl;
                }
 }
    currentPosition = start;
                
                // TO DO 
    
                                             
    
    for(size_t i = 0; i < DIRECT; ++i){
        if(result[i] > equil){
                equil = result[i];
                direct = i;
        }   
    }
    
    switch(direct){
        case 0: 
            std::cout << "direction : left, towns : " << equil << std::endl;
            break;
        case 1: 
            std::cout << "direction : right, towns : " << equil << std::endl;
            break;
        case 2: 
            std::cout << "direction : top, towns : " << equil << std::endl;
            break;
        case 3: 
            std::cout << "direction : down, towns : " << equil << std::endl;
            break;
        case 4: break;
        case 5: break;
        case 6: break;
        case 7: break;
        default: std::cout << "unknow direction" << std::endl;
    }
                                 
   return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2016, 16:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программа вывода машинки на экран..(graph)нужен только алгоритм передвижения)
Условие. составьте программу вывода на экран машины . При нажатии Enter она едет по экрану слева...

Реализовать команды передвижения "жучка" в виде отдельных функций
В центре экрана сидит &quot;жучок&quot;, который может перемещаться по прямой на указанное расстояние и...

усталость туриста
Турист в первый день прошел 30 км, на каждый следующий день прошел на 3 км меньше, чем в...

Определить путь туриста
Sub tourist() Dim n, s, s1 As Double s = 50 n = 0 s1 = 50 Do While s &lt; 100 s1 = 0.5 * s1 s =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.