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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 17:14   #1
vovik4385
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 36
По умолчанию нахождение кратчайшего пути от заданной вершины

суть программы такова:реализовать алгоритм нахождения кратчайшего пути от заданной вершины ко всем прочим

#include "stdafx.h"
#include<iostream>
using namespace std;
const int n=9;
void poisk(int A[n][n],int x,int y,int mas[n],int nomer_yarusa);


int _tmain(int argc, _TCHAR* argv[])
{
int A[n][n]={{0,1,0,1,0,0,0,1,0},
{1,0,1,0,0,1,0,0,0},
{0,1,0,1,1,0,1,0,0},
{1,0,1,0,0,0,1,0,0},
{0,0,1,0,0,0,0,1,1},
{0,1,0,0,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0},
{1,0,0,0,1,0,0,0,0},
{0,0,0,0.1,0,0,0,0}};


int mas[n];
int b[n];
int j,k,x,y;
int nomer_yarusa=0;
x=5;
y=6;
poisk(A,x,y,mas,nomer_yarusa);
k=y;
if(mas[y]==0)
cout<<x<<"->"<<y<<"don`t find\n";
else{
cout<<"The length of the shortest path = "<<x<<"->"<<y<<" = "<<nomer_yarusa;
for(j=nomer_yarusa+1;j>1;j--){
b[j]=k;
k=mas[k];
cout<<b[j];
}
cout<<"shortest path"<<b[1];
for(j=2;j<nomer_yarusa+1;j++){
cout<<","<<b[j];}
}
system("pause");

return 0;
}

void poisk(int A[n][n],int x,int y,int mas[n],int nomer_yarusa){
int o[n];
int i,j,k,l,m;
for(j=1;j<n;j++){
mas[j]=0;}
i=k=1;
o[k]=x;
mas[x]=n+1;
nomer_yarusa=0;
do {
m=k;
nomer_yarusa++;
do{
l=o[i];
for(j=1;j<n;j++){
if((A[l,j]!=0)&&(mas[j]==0)){
mas[j]=l;
k++;
o[k]=j;
if(j==y) return;
}
}
i++;
}while(i>m);
}while(i>k);
}
не считает длину пути и кратчайшую цепь!!!
vovik4385 вне форума Ответить с цитированием
Старый 08.11.2012, 17:38   #2
vovik4385
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 36
По умолчанию

Помогите пожалуйста не могу понять в чем проблема?
vovik4385 вне форума Ответить с цитированием
Старый 08.11.2012, 17:57   #3
ruslawik
Новичок
Джуниор
 
Регистрация: 08.11.2012
Сообщений: 2
По умолчанию

Уроки для хакеров и программистов
Уроки для хакеров и программистов http://itblogs.org/
ruslawik вне форума Ответить с цитированием
Старый 08.11.2012, 18:00   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

В-нулевых, тег CODE. Во-первых, Вы бы ещё переменные разным числом подчёркиваний называли для пущей понятности. Несколько эквивалентных преобразований кода (я по-прежнему не понимаю, что делает программа в целом, но, возможно, так станет что-то яснее Вам):
Код:
void poisk(int A[n][n], int x, int y, int mas[n]){
  for(int j=1;j<n;j++) mas[j]=0;
  mas[x]=n+1;

  int i=1;
  int k=1;
  int o[n];
  o[1]=x;
  do {
    int m=k;
    do{
      int l=o[i];
      
      for(int j=1;j<n;j++){
        if((A[l,j]!=0)&&(mas[j]==0)){
          mas[j]=o[i];
          k++;
          o[k]=j;
          if(j==y) return;
        }
      }
      i++;
    }while(i>m);
  }while(i>k);
}
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение кратчайшего пути на графе. Мария74 Помощь студентам 14 31.10.2012 21:36
Нахождение кратчайшего пути Grime Microsoft Office Excel 6 06.06.2012 08:46
Подпрограмма нахождения самого длинного простого пути от заданной вершины (язык Си) Dmell Помощь студентам 1 02.05.2012 10:07
Нахождение кратчайшего пути в графе Nata220 Помощь студентам 4 29.11.2010 14:54
Алгоритм Беллмана-форда,нахождение кратчайшего пути bakir Помощь студентам 1 13.01.2010 02:31