Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
ВнизАлгоритм Найти похожие ветки
← →
Боян Георгиев (2003-12-25 15:32) [0]Здравствуйте мастера!
Помогните мне решит следную задачку:
var
Bits: array of boolean;
Известно началное состояние массива:
0 1 0 1 0(0 значит false, 1 значит true);
Данны процедуры:
procedure ChangeBits_1_2_3;
begin
Bits[1] := not Bits[1];
Bits[2] := not Bits[2];
Bits[3] := not Bits[3];
end;
procedure ChangeBits_1_5;
begin
...
end;
procedure ChangeBits_3_4_5;
procedure ChangeBits_4_5;
Програма надо използувать данных процедур в такой последовательности, чтобы получить в массиве Bits комбинацию
1 0 1 1 1
Я буду благодарный всему, кто подскажет мне быстрый алгоритм для нахождение подходущую последовательностю.
PS: Извините мне если я допустил ошибки в тексте:) Я болгарин
← →
Новичек (2003-12-25 15:36) [1]чтото не вкурил что ты хочешь!
Ты хочешь узнать какие биты тебе надо инвертировать, чтобы получить последовательность 1 0 1 1 1
или что?
← →
Тимохов (2003-12-25 15:39) [2]Это смахивает на задачку из учебника.
Лабы надо делать самому. ИМХО.
← →
Palladin (2003-12-25 15:42) [3]
> Боян Георгиев (25.12.03 15:32)
Задача определить составить алгоритм нахождения этой последовательности, или же самому найти последовательность и написать программу?
← →
TUser (2003-12-25 15:47) [4]Задача у него - составить алгоритм из имеющихся процедур.
← →
Боян Георгиев (2003-12-25 15:54) [5]Palladin © (25.12.03 15:42) [3]
> Боян Георгиев (25.12.03 15:32)
Задача определить составить алгоритм нахождения этой последовательности, или же самому найти последовательность и написать программу?
В задачу надо изпользоват толко данных процедуров чтобы из комбинации 0 1 0 1 0 получить 1 0 1 1 1.
Тимохов © (25.12.03 15:39) [2]
Это смахивает на задачку из учебника.
Лабы надо делать самому. ИМХО.
Задача нет из учебника:)
Задача из конкурса.
Если знаеш болгарский, можеш прочитать условие на сайте
http://konkurs.musala.com/2003_04/problem3/task.rtf
← →
TUser (2003-12-25 16:18) [6]Кстати, что-то по-болгарски понятно.
"Напишите програма която определя ако е възможно ... "
← →
Новичек (2003-12-25 16:18) [7]ответ НИКАК
С помощью тех процедур что ты написал - НИКАК невозможно!
Или ты их неправильно написал или действительно невозможно!
← →
jack128 (2003-12-25 16:26) [8]
> ответ НИКАК
Док-во
Бит 2можно изменить только с помощью ChangeBits_1_2_3 - значит эту процедуры нужно/можно использовать Нечетное число раз. Это приведет к тому что биты 1/2/3 встанут в нужное положение -> ChangeBits_3_4_5 можно использовать только четное число раз (но это бессмыслено так не изменит положение бита 5). Остается ChangeBits_4_5 но нам нужно исменить бит 5 НЕ миняя бит 4 а это невозможно. ЧТД.
← →
Новичек (2003-12-25 16:28) [9]
> jack128
Я думаю он сам, взяв чистый листок бумаги, рассписал ето и понял что здесь чтото не так! :-)
← →
MBo (2003-12-25 16:33) [10]обозначим
procedure ChangeBits_1_2_3 = A
procedure ChangeBits_1_5 = B
procedure ChangeBits_3_4_5 = C
procedure ChangeBits_4_5 = D
биты 1,2,3,5 в данной последовательности нужно поменять нечетное число раз, а 4- четное число раз (N mod 2 =0)
пусть процедура A применена а раз, B-b, C - c, D-d раз
тогда
для Bit[1]
(A+B) mod 2=1
для 2
A mod 2=1 => B mod 2=0
для 3
(A+С) mod 2=1 => C mod 2=0
для 4
(С+D) mod 2=0 => D mod 2=0
для 5
(B+C+D) mod 2=1 - невозможно!!!!
система из 5 диофантовых уравнений с 4 неизвестными - несовместна, т.е. решения при таком наборе процедур для перехода
0 1 0 1 0 -> 1 0 1 1 1
не существует
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c