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

Найти самый короткий путь от точки до точки в матрице - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать одномерный массив на основе двух других массивов http://www.cyberforum.ru/cpp-beginners/thread667481.html
Даны два массива: А, состоящий из N элементов и В, состоящий из N элементов. Сформировать массив C по следующему правилу Результат распечатать в виде: Число элементов: Исходный массив А: Исходный массив В: Новый массив С:
C++ COORD position = {0,0}; - как это работает? Здравствуйте. Разбираю код двух программ: "Сапер" и "Змейка" и в каждой из них есть, вроде бы, функция COORD. То, что COORD position = {0,0}; отвечает за местоположение некоторой точки с координатами (x,y) - это понятно, но как оно работает? http://www.cyberforum.ru/cpp-beginners/thread667479.html
C++ fstream
Всем доброго дня! Как с помощью библиотеки fstream вывести содержимое файла на экран??
C++ Перевод программы с Pascal на С++
1. procedure TForm1.Button1Click(Sender: TObject); var i,k,n:integer; x,y,S:array of real; D:real; begin n:=StrToInt(edit1.Text); D:=StrToInt(edit2.Text); i:=0; for K:=1 to n do
C++ Обработка массива http://www.cyberforum.ru/cpp-beginners/thread667464.html
Помогите напи сать программу по заданному исходнику под Visual C++ Задание: Заданы два массива X=(x1,x2,...,xn) и Y = (y1,y2,...,ym), в состав которых входят натуральные числа, причем в каждом из этих массивов нет повторяющихся элементов. Сформировать массив Z, включив в него все элементы, которые одновременно содержатся в массиве X и массиве Y. Подсчитать количество неповторяющихся...
C++ Программа для операций с комплексными числами На базе приведенного ниже класса и примера его использования надо реализовать программу работы с комплексными числами, что бы выполнялись следующие требования: 1. Программа должна позволять выполнять следующие основные операции на комплексными числами: + - * / ++(унарный плюс) --(унарный минус) 2. Программа должна позволять выполнять приведенные выше операции как над парой комплексных чисел,... подробнее

Показать сообщение отдельно
actium
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 3
10.10.2012, 22:43     Найти самый короткий путь от точки до точки в матрице
эм.... могу на Pascal дать! На С++ переделать просто. Ну в принципе на вот, если разберёшься норм, нет то потом на с++ переписать могу... хотя блин ладно щас напишу:
блин долго напишу вот так псевдокодом почти...

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
#include <stdio.h>
 
char a[10][10];
const maxQ=100;
int q1,q2,qx[maxQ],qy[maxQ],qz[maxQ],ans=-1,x1,y1,x2,y2;
 
int add(int y, int x, int z){   // y,x - координаты рассматриваемой точки, z - шаг на котором до неё дошли.
    if (a[y,x]!="*") return 0;  // если по клетке пойти нельзя (преграда) выход из процедуры
    a[y][x]='#';     // мусорим клетку чтоб не пойти второй раз
    qx[q1]=x;
    qy[q1]=y;        // запоминаем клетку и с какого раза пришли
    qz[q1]=z;
    if (q1>maxQ) q1=0;     // опять же зацикливание... внизу писал
    if( (y==y2)&(x==x2)){  // проверка если вдруг это клетка куда надо прийти то запоминаем на каком щаге и выходим.
        q1=q2+1;
        ans=z;
    }
    return 1;
}
 
void main(){
//ну тут чтение размера массива, массив, стартовую точку (y1,x1) и конечную (y2,x2)
    q1=0; q2=0;
    add(y1,x1,0);   
    while (q1!=q2){  //пока начало очереди не дошло до конца
        x=qx[q2];
        y=qx[q2];            // присваиваем точку из очереди
        z=qz[q2];
        add(y-1,x,z+1);     // попытка пойти во все 4 направления вверх, вниз, влево, вправо
        add(y+1,x,z+1);
        add(y,x-1,z+1);
        add(y,x+1,z+1);
        q2++;           // отодвигаем конец
        if (q2>maxQ) q2=0;   // зацикливание очереди, в принципе если не разбираешься можно опустить.
    }
    printf("%d",ans);
}
P.S: по "*" можно ходить по "#" нельзя!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru