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

Нахождение всех возможных путей для спуска с вершины матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале [0;0,8] абсолютная погрешность не превыша http://www.cyberforum.ru/cpp-beginners/thread619218.html
Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале абсолютная погрешность не превышает 0,001. Сравнить результаты методов вычисления. заранее благодарю
C++ Книга Стивена Поттса помогите найти книгу: "BORLAND C++ в примерах" Автор: Стивен Поттс, Тимоти С. Монк http://www.cyberforum.ru/cpp-beginners/thread619214.html
Лабиринт C++
#include <iostream> #include <fstream> #include <conio.h> #include <time.h> #include <cmath> #include <stdio.h> using namespace std; int main()
Конкатенация строк C++
Должно быть консольное приложение. Очень простой вопрос, но сам что-то завис, и немогу найти что хочу. Значит так есть такой кусок кода hf=FindFirstFile("d:\\Auto\\*", &FindFileData); ///********************* А хочу так hf=FindFirstFile("d:\\Auto\\ /*сюда вставить переменную типа стринг*/ \\*", &FindFileData); Ну в общем чтобы можна было по папкам переходить.(Зайти в одну...
C++ Зачем оставлять переменные-члены класса закрытыми? http://www.cyberforum.ru/cpp-beginners/thread619193.html
Вот пишут,что нужно переменные - члены класса оставлять закрытыми, используя для их установки значений или возвращений значений, методы доступа. Но зачем так делать?
C++ Перевод инфиксного выражения в постфиксное (обратная польская запись) Всем привет! Надо с помощью стека на динамическом массиве реализовать перевод инфиксного выражения в постфиксное. (обратная польская нотация). с помощью алгоритма сортировочной станции. Кто не знает или забыл, что это такое, например: дано выражение (4+5)*7 45+7* - это обратная польская запись (постфиксное выражение) У меня почему-то не записываются операции в стек, в чем ошибка в... подробнее

Показать сообщение отдельно
Thirteen
 Аватар для Thirteen
32 / 32 / 4
Регистрация: 04.07.2012
Сообщений: 50
05.07.2012, 02:50     Нахождение всех возможных путей для спуска с вершины матрицы
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
62
63
64
#include <iostream>
#define SIZE 4
 
using namespace std;
 
void Search(int [SIZE][SIZE], int, int, int [SIZE]);
int main()
{
    int Matrix[SIZE][SIZE], String[SIZE];
    for(int i = 0; i < SIZE; i++)
    {
        String[i] = 0;
    }
    Matrix[0][0]=1; Matrix[0][1]=2; Matrix[0][2]=0; Matrix[0][3]=0;
    Matrix[1][0]=3; Matrix[1][1]=4; Matrix[1][2]=5; Matrix[1][3]=0;
    Matrix[2][0]=6; Matrix[2][1]=7; Matrix[2][2]=8; Matrix[2][3]=9;
 
    for(int i = 0; i < SIZE; i++)
    {
        if(Matrix[0][i] != 0)
        {
            String[0] = i;
            Search(Matrix, 0, i, String);
        }
    }
    return 0;
}
 
void Search(int Matrix[4][4], int Row, int Column, int String[4])
{
    //Проверяем элемент слева.
    if(Column - 1 >= 0 && Matrix[Row+1][Column-1]!=0 && Row < SIZE)
    {
        //Если он есть, записываем его в массив String
        String[Row+1] = Column-1;
        //Рекурсивно переходим к левому элементу
        Search(Matrix, Row+1, Column-1, String);
    }
    //Проверяем элемент снизу
    if(Matrix[Row+1][Column]!=0 && Row < SIZE)
    {
        //Если он есть, записываем его в массив String
        String[Row+1] = Column;
        //Рекурсивно переходим к нижнему элементу
        Search(Matrix, Row+1, Column, String);
    }
    //Проверяем элемент справа
    if(Matrix[Row+1][Column+1]!=0 && Row < SIZE)
    {
        //Если он есть, записываем в массив.
        String[Row+1] = Column+1;
        //Рекурсивно переходим к правому элементу
        Search(Matrix, Row+1, Column+1, String);
    }
    //Дошли до конца - выводим.
    if(Row==2)
    {
        String[Row] = Column;
        for(int i = 0; i < SIZE-1; i++)
            cout << String[i];
        cout << endl;
    }
    //Дальше происходит размотка стека вызовов.
}
Алгоритм рекурсивный.
Можно решить как-то более интеллектуально, если ввести структуру с указателями на диагональные элементы. Если интересно, могу написать.
И переход к нижнему элементу наверное лишний... Ну пусть будет. Убрать недолго, если что.
 
Текущее время: 22:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru