Форум программистов, компьютерный форум CyberForum.ru

Метод прямой прогонки. Динамическое программирование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ функции и массивы http://www.cyberforum.ru/cpp-beginners/thread1005654.html
оформить транспонирование квадратной матрицы как функцию и проверить ее на симметричность (тоесть совпадает ли начальная матрица с транспонированной), симметричность оформить как функцию. не могу понять почему неправильно работает, подскажите пожалуйста=( #include <iostream> #include <conio.h> int trans(int **x,int nx) { int i,j,s,**h; h=new int*; for (i = 0; i<nx; i++){ h=new int...
C++ Как переписать эту программу через операторы цикла, чтобы сократить код и не писать одно ито же с разными индексами для каждого числа #include<iostream.h> #include<conio.h> #include<stdio.h> #include<math.h> void main() { clrscr(); float x,y,d; cout<<"input x and y\n"; http://www.cyberforum.ru/cpp-beginners/thread1005646.html
Определить с какого номер точки,через которую проходит окружность с центром в начале координат внутрь которой попадают все оставшиеся точки C++
имеется,n точек на плоскости,заданных своими координатами.Определить с какого номер точки,через которую проходит окружность с центром в начале координат внутрь которой попадают все оставшиеся точки. напишите код с коментами пж
Дано множество точек на плоскости C++
Пожалуйста, если не сложно, нужен алгоритм с объяснением!! Заранее спасибо)) Дано множество точек на плоскости,заданных полярными координатами.Получить декартовы координаты этих точек.Заранее спасибо)
C++ Каждый элемент массива заменить остатком от деления элемента на 7 http://www.cyberforum.ru/cpp-beginners/thread1005620.html
Задание: Ввести двумерный массив. Каждый элемент, стоящий в мас-сиве на позиции с четной суммой индексов заменить остатком от деления этого элемента на 7. Массив вывести до и после преобразования.
C++ Задача. Из листа клетчатой бумаги удалили некоторые клетки Из листа клетчатой бумаги размером M*K клеток удалили некоторые клетки. Подсчитать, на сколько кусков распадется оставшаяся часть листа. Пример: Если из шахматной доски удалить все клетки одного цвета, то оставшаяся часть распадется на 32 куска. подробнее

Показать сообщение отдельно
Iko
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 4

Метод прямой прогонки. Динамическое программирование - C++

12.11.2013, 17:28. Просмотров 1088. Ответов 1
Метки (Все метки)

надо написать прогу, которая искала бы кратчайший путь из одного конца неориентированного графа в другой путем прямой прогонки. я реализовал граф методом списка дуг. проверил(немного коряво но все таки...) не идет ли в в вершину лишь одна дуга и все... как реализовать формулы понятия не имею. Может быть поможете? Если не кодом, то хотя бы словесно опишите как и что.
P.S. формула кратчайшего пути методом прямой прогонки выглядит как-то так:
(Кратчайший путь к узлу) = min({Кратчайший путь к предыдущему узлу+расстояние от предыдущего до этого узла})={2+3=5
3+5=8
2+4=6} Кратчайший путь к узлу = 5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//  Алгоритмы V 1.0.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    int i,j, Graf[4][14]={/*из какой вершины начинается дуга [0]*/1,1,1,2,3,3,4,5,5,6,6, 7, 8, 9,
                           /*в какой вершине заканчивается [1]*/   2,3,4,5, 5,6,6,7, 8,8,9,10,10,10,
                           /*вес дуги [2]*/                        5,7,9,4,10,8,5,6,10,4,3, 7, 5, 6 };
    
////////////////////Построение графа////////////////////////////////////////
    
    for (i=0;i<3;i++)
    {
        
     for (j=0;j<14;j++)
     {
        
        printf("%5d",Graf[i][j]);
        
     }
     
      printf("\n");
        
    }
 
    
    printf("\n");
    
////////////////////Проверка не идет ли в вершину только одна дуга////////////////////////////////
    for (j=0;j<14;j++)
    {
        printf("%5d",Graf[1][j]);
        
 
        if (Graf[1][j]!=Graf[1][j+1] )
        {
             Graf[3][j]=Graf[2][j];
             
            
             
         }
 
     }
    printf("\n");
    printf("\n");
    printf("\n");
    for (j=0;j<14;j++)
    {
        printf("%5d",Graf[3][j]);
            
    }
     printf("\n");
system("pause");
      return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru