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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 11:13   #11
Nomlpppp
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 51
По умолчанию

Тоже, ничего лучше не придумал, чем использовать некую матрицу. Но ты, в своем примере так-же создаешь матрицу int put[N][N], правда суть для меня не очень понятна. Я исходил из того, что, вариантов путей получается столько, сколько раз элемент массива (mas[ n ][ m ] равен mas[ n ][ m-1 ]) плюс 1. Точнее в твоем примере:
Код:
int mas[N][2]={{1,2},{2,3},{3,4},{3,5},{3,6},{3,7},{3,8},{3,9}, {4,9},{5,10},{6,11},{7,11},{8,11},{9,11},{10,11},{ 11,12},{12,13}};
индексы выделенных эл-ов массива запомнил в дополнительный массив dop, На основе него строится матрица, она выглядит так:
Код:
0  0  8  -1  -1  -1  -1  -1  0  0  0  0  0  0  0  0  0  
0  0  -1  8  -1  -1  -1  -1  0  0  0  0  0  0  0  0  0  
0  0  -1  -1  8  -1  -1  -1  0  0  0  0  0  0  0  0  0  
0  0  -1  -1  -1  8  -1  -1  0  0  0  0  0  0  0  0  0  
0  0  -1  -1  -1  -1  8  -1  0  0  0  0  0  0  0  0  0  
0  0  -1  -1  -1  -1  -1  8  0  0  0  0  0  0  0  0  0
Шаг заключается в том, чтобы продвинуться к элементу mas[ x ] с индексом 0, имеющему некоторое значение равеное тому, которое имеет элемент mas[ y ] с индесом 1.
Пример:
mas[ n ] == {3,9} продвигаемя к mas[ n ] == {9,11} и т.д
Затем индекс найденного элемента проэцируется на матрицу и если окажется что там -1, то считается что шаг не закончен.


Итог:
1->2->3->4->9->11->12->13
1->2->3->5->10->11->12->13
1->2->3->6->11->12->13
1->2->3->7->11->12->13
1->2->3->8->11->12->13
1->2->3->9->11->12->13
Полностью исходный текст:
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>











int main()
 {
 int i, j, c, x, p, max_variants, sign;

 int **put;
 int dop[ 17 ];

 int mas[ 17 ][ 2 ] = 
 {
 {1,2},
 {2,3},
 {3,4},
 {3,5},
 {3,6},
 {3,7},
 {3,8},
 {3,9},
 {4,9},
 {5,10},
 {6,11},
 {7,11},
 {8,11},
 {9,11},
 {10,11},
 {11,12},
 {12,13}
 };

 memset( &dop, -1, sizeof(dop) );


 max_variants = 0;
 for( i=1, j=0, sign=0; i<17; i++ )
  {
  if( mas[ i ][ 0 ]==mas[ i-1 ][ 0 ] )
   {
   dop[ j++ ] = i-1;
   ++max_variants;
   sign = 1;
   }
  else if( mas[ i ][ 0 ]!=mas[ i-1 ][ 0 ] && sign )
   {
   dop[ j++ ] = i-1;
   ++max_variants;
   sign = 0;
   }
  }


/*
 for( i=0; i<max_variants; i++ )
  {
  printf( "%d\n", dop[ i ] );
  getch();
  }
*/


 put = ( int ** ) malloc ( max_variants*sizeof(int) );
 for( i=0; i<max_variants; i++ )
  {
  put[ i ] = ( int * ) malloc ( 17*sizeof(int) );
  for( j=0; j<17; j++ )
   {
   if( j>=dop[ 0 ] && j<=dop[ max_variants-1 ] )
    {
    put[ i ][ j ] = ( j==dop[ i ] ) ? 8 : -1;
    }
   else   put[ i ][ j ] =  0;
   }
  }
 

/*
 for( i=0; i<max_variants; i++ )
  {
  for( j=0; j<17; j++ )
   {
   printf( "%d  ", put[ i ][ j ] );
   }
  printf( "\n" );
  }
*/

 for( c=0; c<max_variants; c++ )
  {
  printf( "%d->%d", mas[ 0 ][ 0 ], mas[ 0 ][ 1 ] );
  for( i=0; i<17;  )
   {
 
   x = mas[ i ][ 1 ];
   for( ; ; i++ )
    {
    if( mas[ i ][ 0 ]==x )
     {
     if( put[ c ][ i ]==-1 ) continue;
     else if( put[ c ][ i ]==8 )
      {
      put[ c ][ i ] = -1;
      break;
      }
     else
      { 
      put[ c ][ i ] = 1;
      break;
      }
     }
    if( i==17-1 ) break;
    }


   //printf( "%d %d [ %d ]\n", put[ c ][ i ], mas[ i ][ 0 ], i );
   //getch();

   printf( "->%d", mas[ i ][ 1 ] );

   if( i==17-1 ) goto jmp1;
   }

jmp1:
  printf( "\n" );
  //getch();
  }

 return 0;
 }

Последний раз редактировалось Nomlpppp; 16.05.2009 в 11:55.
Nomlpppp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сетевой блокнот Viteef Софт 5 20.04.2008 20:40
Администрирование сетевой БД(IB) SunKnight БД в Delphi 1 15.04.2008 00:56
Сетевой тест Stanislav Работа с сетью в Delphi 3 29.12.2007 01:37
создание сетевой БД Prowler БД в Delphi 2 09.01.2007 14:23