Студенты факультетов ТГПИ объединяйтесь!!!

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Студенты факультетов ТГПИ объединяйтесь!!! » Программирование » Надо девушке с 4-ого курса помочь :)


Надо девушке с 4-ого курса помочь :)

Сообщений 1 страница 10 из 10

1

Решите задачу определения пути минимальной стоимости из некоторого произвольного пункта А в другой произвольный пункт Б? используя "жадный" алгоритм. Информация о длинах путей между n городами представлена матрицей расстояний R[nxn]. Суть "жадного" алгоритма состоит в выборе на каждом шаге пути наименьшей длинны до тех пор, пока не будет достигнут пункт назначения Б. Подсчитать длину пути.

2

за бутылочку короны лайм)))
говори на каком языке писать

3

паскаль, бутылочка будет :) и блок схему накидаешь тогда? Зараннее спс
а вообще я не помню чтоб у нас на 4-ом такая хрень была :)

4

на какое мыло?

5

че то поздно я сел эту фиговину писать. потестите сами - работает\не работает?
блок схема всей программы нужна??? это фигня. её долго рисовать. если только саму реализацию алгоритма...

uses crt;
const
  TownCount = 10;
  MaxCost   = 100;
var
  CurCost : Integer; {current cost}
  MinCost : Integer; {Minimal cost for step from current city}
  r : array[1..TownCount,1..TownCount] of Integer;
  Way : array[1..TownCount*TownCount] of Integer;
  WayCount : Integer;
  CurTown : Integer; {current city}
  NextTown : Integer;
  FilledTable : Boolean;
  Answer : Char;
  i,j : Integer;
  istr,jstr : string;
  st : string;
  LastTown : Integer;
begin
  clrscr;
  randomize;
  {fill table}
  FilledTable := false;
  repeat
    Writeln('Fill table with random? Y\N');
    Readln(Answer);
    if (upcase(Answer) = 'Y') or (upcase(Answer) = 'N') then
      FilledTable := true;
    if FilledTable then
    begin
      for i := 1 to TownCount do
        for j := 1 to i do
          if i = j then
            r[i,j] := -1
          else
          begin
            if upcase(Answer) = 'Y' then
                 r[i,j] := 1 + Random(MaxCost)
            else
            begin
              str(i,istr);
              str(j,jstr);
              Writeln('Cost from '+istr+' to '+jstr+': ');
              repeat
                read( r[i,j] );
              until ( r[i,j] > 0)and( r[i,j] <= MaxCost );
            end;
            r[j,i] := r[i,j];
          end;
    end;
  until FilledTable;

  {show table}
  Writeln('Cost table:');
  Write( '  ' );
  for j := 1 to TownCount do
    Write( j:4 );
  for i := 1 to TownCount do
  begin
    writeln;
    write(i:2);
    for j := 1 to TownCount do
      Write( r[i,j]:4 );
  end;

  {calculate way from first to last town}
  WayCount := 0;
  CurTown := 1;
  LastTown := TownCount;
  CurCost := 0;
  while ( CurTown <> LastTown) do
  begin
    MinCost := MaxCost + 1;
    NextTown := 0;
    for i := 1 to TownCount do
      if ( r[i,CurTown] < MinCost) and ( r[i,CurTown]<> -1 ) then
      begin
        NextTown := i;
        MinCost := r[i,CurTown];
      end;

    inc(WayCount);
    Way[WayCount] := NextTown;
    r[CurTown , NextTown] := -1;
    r[NextTown , CurTown] := -1;
    CurTown := NextTown;
    inc(CurCost,MinCost);
  end;

  {Print results}
  Writeln;
  str(CurCost,st);
  Writeln('Total cost:' + st);
  str(WayCount,st);
  Writeln('Total step count:' + st);
  Writeln('Way:');
  for i := 1 to WayCount do
    Write(Way[i],',');
end.

6

никакого ответа...

7

ндя...

8

ну спасибо типа :)
как встретимся куплю пивка

9

девушка сдала?

10

нет :) там все намного проще надо в антил заключить.  Я сам не могу сделать, хотя и не пытался. :) просто своих заморочек хватает, но все равно спасибо :)


Вы здесь » Студенты факультетов ТГПИ объединяйтесь!!! » Программирование » Надо девушке с 4-ого курса помочь :)