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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 22:11   #1
NAG
 
Регистрация: 28.04.2009
Сообщений: 5
Вопрос Многомерный масив

Вот программа, которая длжна в лабиринте(лабиринт представлен в виде матрицы) найти путь по которому сумма цыфр будета равна некому числу(например: 70) и находить пути минимальной и максимальной сумм элементов(по одному с каждой строки матрицы). Вот написал, находит путь для результут суммы 70, но немного плохо работает. Подскажите, как исправить и как сделать поиск минимальной и максимальной сумм. В конечном выводе должны выводтся координати елементов.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int max;
int a[5][5]={{8,7,6,8,4},{6,0,5,0,5},{9,8,7,9, 7},{4,0,8,0,8},{6,7,6,3,8}};//masuv chusel
int l[5][5];//masuv mitok (bylu tyt 4u ni)
int seek(int i,int j,int s)//rekypcuvna fynkcija powyky
{
if(i>4||j>4||i<0||j<0||l[i][j]==1||a[i][j]==0)return(0);//jakw4o vujwlu za me*i abo xid nemo*luvuj
if((i==0)&&(j==0)&&(s+a[0][0]==70))//jakw4o dosjaglu rezyltaty
{
printf("%d %d",i+1,j+1); //nadpykyvatu koordunatu
return(1); //ta povidomutu pro tce
}

l[i][j]=1;//mu tyt je
if(seek(i-1,j,s+a[i][j])){printf("\n%d %d",i+1,j+1);return(1);}//rekyrsuvno wykatu dali
if(seek(i+1,j,s+a[i][j])){printf("\n%d %d",i+1,j+1);return(1);}
if(seek(i,j-1,s+a[i][j])){printf("\n%d %d",i+1,j+1);return(1);}
if(seek(i,j+1,s+a[i][j])){printf("\n%d %d",i+1,j+1);return(1);}
l[i][j]=0;//mu zvidcu piwlu
return(0);//proval
}
void main(void)
{
clrscr();
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
l[i][j]=0;//zapovnutu masuv mitkamu "ne bylu"
printf("naw wljax:\n");
seek(4,4,0);

getch();
}

Последний раз редактировалось NAG; 04.03.2010 в 22:13.
NAG вне форума Ответить с цитированием
Старый 05.03.2010, 22:31   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Для того чтобы найти в принципе минимальный и максимальный пути (не просто анализируя соседние клетки у текущего положения) нужно использовать волновой алгоритм, интересная вещь, кстати
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масив MyST1caL Общие вопросы Delphi 1 20.01.2010 23:06
Как создать многомерный динамический массив в Delphi? Velross Помощь студентам 3 06.01.2010 20:50
многомерный не квадартный массив-константа Izhic Общие вопросы Delphi 3 11.11.2009 16:34
С++/С# многомерный массив DeFace Общие вопросы C/C++ 4 03.05.2009 16:07
Многомерный массив Iogan Gamba Puti Общие вопросы C/C++ 2 08.05.2008 15:20