Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.04;
Скачать: CL | DM;

Вниз

Вот такая задачка (сам придумал) ;-)   Найти похожие ветки 

 
Igorek ©   (2002-06-02 08:06) [0]

Дано:
Числа N и K.
Масивы A[N] и B[N], случайным образом заполненные значениями 0 и 1.
Функция function f(i: Integer): Boolean, про которую известно, что она:
1) возвращает true если масивы А и В одинаковы и false - если нет.
2) если аргумент в дипазоне от 1 до К, тогда:
в зависимости от аргумента инвертирует значения определенных элементов масива А (каких именно - однозначно зависит от аргумента)
если нет, то ничего не делает

Требуется:
Добиться от функции f возвращения true минимальным числом ее вызовов (если это возможно).
Прямого доступа к массивам А и В нет.
С фукцией f можно предварительно потренироваться.

Еще сам не решил ;-)


 
Igorek ©   (2002-06-03 15:12) [1]

Эй где вы, любители крепких орешков? MBo, MrSimm?
Мне уж самому эта задачка все больше начинает нравиться :-)


 
Виктор Щербаков ©   (2002-06-03 15:31) [2]

ИМХО, очень мало известно о функции f. Вернее о зависимости номеров инвертируемых элементов массива от аргумента.


 
VictorT ©   (2002-06-03 15:37) [3]

Я так понял, это получается задачка про "чёрный ящик", которым и является функция f. Её не всегда можно однозначно решить.


 
SPeller ©   (2002-06-03 15:38) [4]

for i:=n downto 1 do
if a[i]<>b[i] then f(i);



 
SPeller ©   (2002-06-03 15:39) [5]

Здесь имеется ввиду что ф-я f инвертирует эл-ты от 1 до i


 
SPeller ©   (2002-06-03 15:40) [6]

Хотя можно инвертировать только эл-т с номером i


 
VictorT ©   (2002-06-03 15:51) [7]


> SPeller © (03.06.02 15:38)

А в условии сказано, что прямого доступа к массивам нет.


 
SPeller ©   (2002-06-03 15:59) [8]

Тогда перебирааем все возможные комбинации, с которыми могут случайным образом заполниться массивы.


 
Igorek ©   (2002-06-03 16:34) [9]

Я думаю известно достаточно, если вчитаться.
1) Инвертировать напр. A[1] - значит A[1] = 1 - A[1]
2) Функция f инвертирует значения определенных элементов масива А (каких именно - однозначно зависит от аргумента


 
Igorek ©   (2002-06-03 16:39) [10]

Я бы даже ужесточил условие: никаких тренировок с f, все вызовы считаются.

Кроме того перебрать варианты - это не решить задачу.
Надо определить кратчайшую последовательность вызовов f и параметр в каждом случае.


 
Igorek ©   (2002-06-03 17:05) [11]

Уточню, во избежание недоразумений.
Известны числа N и K, масивы A[N] и B[N].


 
SPeller ©   (2002-06-03 19:11) [12]

И всё равно задание твоё непонятное. Допустим N>K тогда если эл-ты массива выше К разные, то никаким макаром мы их не уравняем. А посчитать параметр и вычислить сколько раз - это ты сам будешь считать в зависимости от содержания массивов и их размерности. Здесь всё относительно.

Да и вообще, зачем мозги парить? На практике всё-равно такое не встречается.


 
Igorek ©   (2002-06-03 19:23) [13]

2SPeller
Очень даже полезная практически задачка.



Страницы: 1 вся ветка

Текущий архив: 2002.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-10013
Феликс
2002-06-03 14:21
2002.07.04
Почему в форуме нет раздела


3-9700
Sour
2002-06-10 17:23
2002.07.04
IBServer.


7-10036
Rail
2002-04-06 09:38
2002.07.04
Сетевой диск без стандартного диалога Windows


6-9935
Alexander K.
2002-04-22 02:21
2002.07.04
Мастера, просветите пожалуйста


7-10032
Song
2002-01-10 15:21
2002.07.04
Другая проблема =). Вообщем программа уже не мала, размер exe больше мегабайта, иногда вылетает критическая ошибка EOutOfRecources и другие. Помогает перезагрузка Дельфей.