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

Корректировка в рекурсии - C++

Восстановить пароль Регистрация
 
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
22.05.2011, 18:58     Корректировка в рекурсии #1
Возникла проблема в несложной задаче. Решать задачу конечно же не требуется, просто отккоректировать в плане рекурсии.
Вот условие: http://********/index.asp?main=task&id_task=165

А вот мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
int s(int a,int b);
int n,m,t[99][99],i,j;
int main()
{   cin>>n>>m;
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      cin>>t[i][j];
    cout<<s(1,1);
    system("PAUSE");
 
}
int s(int a,int b)
{if((a==n)&&(b==m))return 1;}else
 if((a+t[a][b]<=n)&&(b+t[a][b]<=m))return s(a+t[a][b],b)+s(a,b+t[a][b]);else
 if(a+t[a][b]<=n)return s(a+t[a][b],b);else
 if(b+t[a][b]<=n)return s(a,b+t[a][b]);else
 return 0;
}
Здесь я считываю числа m,n; и массив t, потом идет рекурсивная функция по координатам а и b.
Но почему-то не учитываются некоторые ходы.
Подскажите, пожалуйста, что я не так обьявил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 18:58     Корректировка в рекурсии
Посмотрите здесь:

C++ Корректировка записей
Корректировка весов C++
C++ Требуется корректировка)
C++ Функции пользователя.Корректировка
Корректировка текстовых строк C++
Создание и корректировка файла C++
C++ Корректировка строки
Корректировка строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.05.2011, 19:18     Корректировка в рекурсии #2
См. коментарии:
C++
1
2
3
4
5
6
7
int s(int a,int b)
{if((a==n)&&(b==m))return 1;}else// вот здесь лишняя }
 if((a+t[a][b]<=n)&&(b+t[a][b]<=m))return s(a+t[a][b],b)+s(a,b+t[a][b]);else
 if(a+t[a][b]<=n)return s(a+t[a][b],b);else
 if(b+t[a][b]<=n)return s(a,b+t[a][b]);else// нужно в этой строке if(b+t[a][b]<=m)
 return 0;
}
Yandex
Объявления
22.05.2011, 19:18     Корректировка в рекурсии
Ответ Создать тему
Опции темы

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