Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2014, 23:17   #1
linkoln_7
Форумчанин
 
Регистрация: 04.03.2013
Сообщений: 164
По умолчанию Нахождения оптимального пути

Доброго времени суток!
Прошу у вас помощи)
Есть задача на поиск оптимального пути
Алгоритм задачи:
1)А-массив,описывающий значение коэффициентов по строкам,размерность [6][5]
2)В-массив,описывающий значение коэффициентов по столбцам ,размерность [6][5]
3)С-массив,описывающий значение в узлах решетки [6][6]
4)D-массив,описывающий найденный путь [6][6]

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

Вот я тут начал что то пробовать
Код:


#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
const int M=5;//stoldez
const int N=6;//stroka
int A[6][5] =    {1,4,6,9,1,
                4,4,6,7,8,
                3,5,7,9,8,
                    2,3,2,5,9,
                1,5,7,8,9,
                0,8,6,9,9};
 
int B[6][5] =    {2,2,2,3,1,
                4,3,2,5,8,
                3,4,4,6,9,
                2,5,5,7,8,
                1,2,4,6,7,
                9,1,3,6,8};
 
 
int C[6][6]
 
 
void vivod(int a[][5],int kol)
{
    int i,j;
    for (i=0;i<kol;i++)
    {
        for (j=0;j<6;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    
    }
 
 
 
}
 
void main()
 
{
printf("hello");
    getchar();
 
    
 
    vivod(A,N);
    vivod(B,N);
    int C[6][6];
    int D[6][6];
    C[5][5]=0;
 
 
    for (int j=4;j>0;j--)
    {
    C[5][j]=C[5][j+1];
    A[5][j];
    
    }
 
    for (int i=4;i>=0;i--)
    {
        C[i][5]=C[i+1][5]+B[5][i];
    }
 
    //S1=C[5][4]+B[4][4];
    //S2=C[4][5]+A[4][4];
    if(S1>S2)
    {
    C[4][4]=S2;
    }
    else 
    {
        C[4][4]=S1;
    }
 
    for (int i = 4;i>=0;i-- )
    {
    for ( int j=4;j>=0;j--)
    {
    
    int S1=C[i+1][j]+B[i][j];
    int S2=C[i][j+1]+A[i][j];
    if(S1>S2)
    {
     C[i][j]=S2;
    }
    else 
    {
        C[i][j]=S1;
    }
    
    }
    
    
    
    }
 
    D[0][0]=1;
    D[5][5]=1;
    int i=j=0;
    while(!D[5][4]&&D[4][5])
    {
    int sum1=a[i][j]+c[i][j+1];
    int sum2=b[i][j]+c[i+1][j+1];
if(sum==c[i][j])
{
 
D[i][j+1]=1;
j++;
}
 
else{
 
D[i+1][j]=1;
j++;
}
 
 
 
 
}
}
+ есть решенная эта задача в ручную,кто сможет помоги,пожалуйста,заранее спасибо)
Изображения
Тип файла: jpg 5.JPG (23.1 Кб, 123 просмотров)
linkoln_7 вне форума Ответить с цитированием
Старый 02.02.2014, 00:18   #2
ВВС
Пользователь
 
Регистрация: 31.01.2014
Сообщений: 18
По умолчанию

Дейкстра тебе в помощь
ВВС вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу для нахождения самого короткого пути от кординаты X1 Y1 до X2 Y2 если на пути встречается яма радиусом R AlbinaM Паскаль, Turbo Pascal, PascalABC.NET 5 27.11.2013 20:02
AI нахождения пути алгоритмом A*. vovken1997 Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 07.07.2012 19:17
Нахождение оптимального пути в двумерном массиве R.I.P. 666 Помощь студентам 1 07.11.2011 10:51
алгоритм нахождения пути blacktener Общие вопросы C/C++ 3 03.04.2011 20:09
"Поиск оптимального пути движения снегоочистительных машин с учетом приоритета дорог" Пролог Kvax Помощь студентам 4 21.12.2008 22:18