Хелпикс

Главная

Контакты

Случайная статья





Задание 3.3. Рекурсивные методы в решении задач



Задание 3.3. Рекурсивные методы в решении задач

1. Расставьте 8 ферзей на шахматной доске размером 8 ´ 8. Найдите хотя бы одну расстановку и выведите результат в виде последовательности из 8 символов, указав номер строки каждого ферзя (например, 24683175).

Код программы

#include <iostream>

using namespace std;

int fanct( int n)

{

if (n < 1 ) return NULL;

else

{

         cout<<"Расположение по строкам" <<" "<< n<<"\n";

return fanct(n - 1);

}

   

 

}

 

 

int main()

{

setlocale(LC_ALL, "rus");

cout << fanct(8);

   

}

Контрольный пример

 

2. Для данного натурального числа от 2 до 20 распечатайте количество его различных разбиений на сумму натуральных слагаемых. Например, для числа 6 количество разбиений равно 11.

Код программы

#include <iostream>

using namespace std;

int f(int, int);

 

int l(int i, int n, int k) { return i > n / 2 ? 0 : 1 + f(n - i, i) + l(i + 1, n, k); }

 

int f(int n, int k) { return n < k ? 0 : l(k, n, k); }

 

int main()

{

int n;

for ( n = 2; n < 20; n++)

{

         cout << n<<" = " <<1 + f(n, 1)<<"\n";

}

}

Контрольный пример

 

3. Расставьте 8 коней на шахматной доске размером 8 ´ 8. Найдите хотя бы одну расстановку и выведите результат в виде матрицы размером 8 ´ 8, указав позиции коней.

Код программы

#include <iostream>

using namespace std;

 

int a1(int z, int i, int j)

{

int f[8][8];

if (z == 8) {

         for (j = 1; j < 9; j++)

         {

                  cout << "\n"; for (i = 1; i < 9; i++)

                  {

                           cout << 0;

                  }

         }

         cout << "\n";

         return 0;

}

else

{

         //f[i][j] = 1;

         cout << 1;

          return a1(z+1,i+1,j);

          

}

}

 

 

int main()

{

int z = 0, i = 0, j = 0;

cout << a1(z, i, j);

   

 

 

   

 

 

}

Контрольный пример

 

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.