|
|||
Задание 3.3. Рекурсивные методы в решении задач ⇐ ПредыдущаяСтр 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);
} Контрольный пример
|
|||
|