Хелпикс

Главная

Контакты

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





Контрольный пример. Задание для выполнения. Текст программы с комментариями. Контрольный пример. Задание для выполнения. Текст программы с комментариями. Контрольный пример



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


 

Задание 3.1

1. Задание для выполнения

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

 

2. Текст программы с комментариями

<?php

const size = 8;

$queen = [0, 0, 0, 0, 0, 0, 0, 0];

 

function out()

{

global $queen;

foreach ($queen as $item) {

   echo $item + 1;

}

}

 

function decision($n = 0)

{

if ($n >= size) {

   out();

   exit;

}

global $queen;

for ($i = 0; $i < size; ++$i) {

   for ($j = 0; $j < $n; $j++)

       if ($queen[$j] == $i || abs($queen[$j] - $i) == $n - $j) {

           break;

       }

   if ($j == $n) {

       $queen[$n] = $i;

       decision($n + 1);

   }

}

}

decision();

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


Задание 3.2

1. Задание для выполнения

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

 

2. Текст программы с комментариями

<form method="get">

Введите число:

<br>

<input type="number" name="n"/>

<br>

<input type="submit" value="Отправить"/>

</form>

<?php

function check($n, $k)

{

if ($k == 0) {

   if ($n == 0) {

       return 1;

   } else {

       return 0;

   }

}

if ($k > $n) {

   return check($n, $n);

} else {

   return check($n, $k - 1) + check($n - $k, $k);

}

}

 

if (!isset($_GET['n'])) {

return;

}

echo check($_GET['n'], $_GET['n']);

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


Задание 3.18



  

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