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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TheAlpha
6 / 6 / 2
Регистрация: 03.01.2013
Сообщений: 116
#1

Рекурсия для двумерного массива - C++

17.02.2013, 17:00. Просмотров 735. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток. Мне нужно написать рекурсивную функцию для нахождения минимального значения в двумерном массиве.
Я могу написать только для одномерного, там ничего сложного нету. Но вот с двумерным - никак не получается. Можете подсказать алгоритм или дать ссылку на теорию, если имеется.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 17:00     Рекурсия для двумерного массива
Посмотрите здесь:

Перебрать все варианты двумерного массива(рекурсия) - C++
Например, дан массив 5x5, каждый элемент которого может принимать значения от 1 до 9. Как рекурсивно перебрать все варианты?

Рекурсия для вычисления суммы элементов массива по условию - C++
Добрый день! Помогите пожалуйста написать программу. В программе есть данная функция: int MasX(int **A) { int x; int i, j; ...

Память для двумерного массива - C++
Доброго времени суток. Нужно сделать программу, где для двумерного массива выделяется память, при условии что malloc вызывается 1 раз.

Функция для двумерного массива - C++
Мне нужно написать функцию или скажите, пожалуйста, правильно ли она составлена в коде /* в каждой строке существуют элементы на...

Рамка для двумерного массива - C++
Вот у меня функция вывода void Show() { for(int i=0; i<row; i++) { for(int j=0; j<col; j++) { ...

Класс для двумерного динамического массива - C++
Вот написал код для двумерного динамического массива с перегруженым оператором= и +. Собственно код работает в MS VS 2010, но меня...

Функция fill Для двумерного массива - C++
Как использовать функцию fill с двумерным массивом std::fill(array, array + size, 1.0); к примеру есть двумерный массив int...

Выделение динамической памяти для двумерного массива. - C++
#include <iostream> int main() { setlocale( LC_ALL,"Russian" ); int N, M; std::cout << "Введите кол-во строк в массиве:...

Динамическое выделение памяти для двумерного массива - C++
нужна помощь вот тело программы, не могу сделать динамическое выделение памяти для первого двумерного массива. второй массив получается...

Описать класс для реализации двумерного массива - C++
Хочу сделать класс, который будет описывать поле размером 5х3. Для этого использую вложенные друг в друга векторы. Но при реализации...

Написать программу для обработки двумерного массива. - C++
Сформировать и вывести на экран заданный двумерный массив (для заполнения массива использовать формулу). 10 20 30 40 20 30 40 50 30...

Для заданного двумерного массива из n строк и m столбцов: - C++
помогите уже неделю не могу решить эту задачу Для заданного двумерного массива из n строк и m столбцов: Осуществить сглаживание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
531 / 436 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.02.2013, 17:17     Рекурсия для двумерного массива #2
Писать сейчас эту функцию лень, но смысл таков: идешь от элемента ( 0; 0 ) в две стороны ( вправо и вниз ) и сравниваешь эти два значения. Дальше просто передаешь в рекурсию соответствующие координаты правой и нижней точки. Конечно, проверяя текущую позицию на выход за границы.
coloc
погромист
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 17:58     Рекурсия для двумерного массива #3
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int min( int **arr, const int size ) {
    static int val = 100;
    static int x = 0;
    static int y = 0;
    if( arr[x][y] < val)
        val = arr[x][y];
    x++;
    if( x >= size){
        y++;
        x = 0;
    }
    return y >= size ? val :    min( arr, size );
}
 
int main() {
    srand( time ( NULL ) + rand());
    const int size = 5;
    int **arr = new int*[ size ];
    for( int i = 0; i < size; i++)
        arr[ i ] = new int[ size ];
    for( int i = 0; i < size; i++, std::cout << std::endl){
        for( int j = 0; j < size; j++){
            arr[i][j] = 1 + rand() % 100;
            std::cout << arr[i][j] << " ";
        }
    }
 
    std::cout << min( arr, size);
    return 0;
}
коряво, но работает
TheAlpha
6 / 6 / 2
Регистрация: 03.01.2013
Сообщений: 116
17.02.2013, 18:51  [ТС]     Рекурсия для двумерного массива #4
Цитата Сообщение от coloc Посмотреть сообщение
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int min( int **arr, const int size ) {
    static int val = 100;
    static int x = 0;
    static int y = 0;
    if( arr[x][y] < val)
        val = arr[x][y];
    x++;
    if( x >= size){
        y++;
        x = 0;
    }
    return y >= size ? val :    min( arr, size );
}
 
int main() {
    srand( time ( NULL ) + rand());
    const int size = 5;
    int **arr = new int*[ size ];
    for( int i = 0; i < size; i++)
        arr[ i ] = new int[ size ];
    for( int i = 0; i < size; i++, std::cout << std::endl){
        for( int j = 0; j < size; j++){
            arr[i][j] = 1 + rand() % 100;
            std::cout << arr[i][j] << " ";
        }
    }
 
    std::cout << min( arr, size);
    return 0;
}
коряво, но работает
Интересный способ заполнения массива, я раньше сталкивался с подобным, но сам никогда не работал. Можете описать как он работает или ссылочку на теорию ?
coloc
погромист
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 19:03     Рекурсия для двумерного массива #5
Псевдослучайные числа.
C++
1
2
3
4
5
srand( time ( NULL ) + rand()); //для того чтобы каждый раз генерировались другие значения 
for( int i = 0; i < size; i++, std::cout << std::endl){
        for( int j = 0; j < size; j++){
            arr[i][j] = 1 + rand() % 100;//генерируется число для каждого элемента, где 1-минимальное число,
                                                  //а 100-максимальное.
rand() возвращает псевдослучайное число, которое зависит от того числа, которое указано в srand.
Yandex
Объявления
17.02.2013, 19:03     Рекурсия для двумерного массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru