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

Матрица, рекурсия - C++

Восстановить пароль Регистрация
 
AHDREY
2 / 2 / 1
Регистрация: 03.11.2013
Сообщений: 20
19.11.2013, 19:32     Матрица, рекурсия #1
Есть матрица 5х5. Состоит из 24-х нулей и одной единицы. Центр матрицы это элемент, позиция которого заходится в "координате" 3х3 (слева направо, сверху вниз, при условии, что матрица нумеруется с единицы). Необходимо подсчитать минимальное кол-во ходов, необходимых для того, чтобы единица(которая единственная в матрице) оказалась в центре матрицы. Единица может перемещаться за один ход только: (на один элемент) влево, вправо, вверх, вниз (в любом порядке, т. е. может за три хода переместиться, например, влево, вверх, вверх). Считаю что тут нужно использовать рекурсию, буду признателен любой помощи.
Пример:
[вводим]:
0 0 0 0 0
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
[выводим]:
3
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2013, 19:32     Матрица, рекурсия
Посмотрите здесь:

рекурсия C++
Рекурсия C++
рекурсия C++
C++ Рекурсия
C++ Рекурсия
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
19.11.2013, 19:43     Матрица, рекурсия #2
Как на счет вот такого:
C++
1
2
3
4
5
6
int i, j;
for( i=0; i<5; i++ )
  for( j=0; j<5; j++ )
    if( matrix[i][j] ) break;
 
cout << abs( i-3 ) + abs( j-3 );
AHDREY
2 / 2 / 1
Регистрация: 03.11.2013
Сообщений: 20
19.11.2013, 20:36  [ТС]     Матрица, рекурсия #3
А что за функция "matrix" и к какой библиотеке(#include <...>) она относится?
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
19.11.2013, 20:37     Матрица, рекурсия #4
Цитата Сообщение от AHDREY Посмотреть сообщение
А что за функция "matrix" и к какой библиотеке(#include <...>) она относится?
подразумевается matrix - твоя матрица
C++
1
int matrix[5][5]
AHDREY
2 / 2 / 1
Регистрация: 03.11.2013
Сообщений: 20
19.11.2013, 21:04  [ТС]     Матрица, рекурсия #5
Спасибо всем за ответы, но я не совсем понимаю что данный код делает? Вроде как он не считает того, чего мне нужно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int a[6][6];
 
int main()
{
    int i, j;
 
for(i = 0; i < 5; i++)
    for(j = 0; j < 5; j++)
        cin >> a[i][j];
for( i=0; i<5; i++ )
  for( j=0; j<5; j++ )
    if( a[i][j] ) break;
 
cout << abs( i-3 ) + abs( j-3 ) << endl;
 
system("PAUSE");
return 0;
}
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
19.11.2013, 21:17     Матрица, рекурсия #6
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
#include <iostream>
#include <cmath>
using namespace std;
 
const int n = 5; 
int a[n][n] = { {0, 0, 0, 0, 0},
                {0, 0, 0, 0, 1},
                {0, 0, 0, 0, 0},
                {0, 0, 0, 0, 0},
                {0, 0, 0, 0, 0} };
 
int main()
{
    int i, j;
 
/*for(i = 0; i < n; i++)
    for(j = 0; j < n; j++)
        cin >> a[i][j];*/
 
bool flag = false;        
for( i=0; i<n && !flag; i++ )
  for( j=0; j<n && !flag; j++ )
    if( a[i][j] ) flag = true;
 
if( flag ) 
  cout << abs( i-n/2 ) + abs( j-n/2 ) << endl;
else
  cout << "none";
 
cin.ignore();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2013, 22:09     Матрица, рекурсия
Еще ссылки по теме:

C++ рекурсия в с++ ( ?: = if() else)
C++ Рекурсия
C++ Рекурсия

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

Или воспользуйтесь поиском по форуму:
AHDREY
2 / 2 / 1
Регистрация: 03.11.2013
Сообщений: 20
19.11.2013, 22:09  [ТС]     Матрица, рекурсия #7
Программа работает не совсем корректно.
Например при вводе такой матрицы:
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Она выдала мне ответ 2, в то время как должна выдать ответ 4.

Добавлено через 34 минуты
Всем кто пытался помочь спасибо, решил сам =)
Yandex
Объявления
19.11.2013, 22:09     Матрица, рекурсия
Ответ Создать тему
Опции темы

Текущее время: 12:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru