Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Найти номер строки и столбца двумерного массива для минимального элемента этого массива - C++
Visual C ++ 2005 Express Edition помогите пожалуйста

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива - C++
Помогите, пожалуйста, нужно разработать метод-член класса для создания одномерного массива из отрицательных элементов двумерного...

C++. Рекурсия бинарного поиска переделать для массива - C++
Есть рекурсия бинарного поиска с проверкой на наличия числа, но с уже даным массивом сделать авто заполнения массива до числа n #include...

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

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

4
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.02.2013, 17:17 #2
Писать сейчас эту функцию лень, но смысл таков: идешь от элемента ( 0; 0 ) в две стороны ( вправо и вниз ) и сравниваешь эти два значения. Дальше просто передаешь в рекурсию соответствующие координаты правой и нижней точки. Конечно, проверяя текущую позицию на выход за границы.
1
coloc
погромист
411 / 247 / 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;
}
коряво, но работает
1
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;
}
коряво, но работает
Интересный способ заполнения массива, я раньше сталкивался с подобным, но сам никогда не работал. Можете описать как он работает или ссылочку на теорию ?
0
coloc
погромист
411 / 247 / 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.
1
17.02.2013, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 19:03
Привет! Вот еще темы с ответами:

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

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

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива. - C++
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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