Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.195.47.227] |
|
Сообщ.
#1
,
|
|
|
7.6. Описание алгоритма
Все подмножества данного множества представляются бинарными последовательностями, получаемыми с помощью кодов Грея. В данном методе каждое последующее множество получается из предыдущего добавлением или удалением одного элемента. Опирается он на следующий факт. Если последовательность C1, C2…Cm содержит все m бинарных последовательностей длины k (m=2^k), причем Ci отличается от Ci+1 в точности в одной координате (I=1,..m-1), эта последовательность C1 0, C2 0,…,Cm 0, Cm 1, Cm-1 1 содержит все бинарные последовательности длины k+1, причем каждые 2 соседние последовательности будут отличаться в точности в одной координате. Этим непосредственно определяется некоторый алгоритм рекуррентного построения последовательности всех подмножеств. Получаемая этим способом последовательность C1, C2, …, Cs (S=2^n), называется бинарным кодом Грея порядка n. 7.7. Текст программы program grey; var n,i,q,k,j:byte; nn:word; st:string; begin writeln('Введите n:'); readln(n); st:='0'; nn:=1; for j:=1 to (nn-1) do begin q:=0; k:=j; k:=k div 2; q:=q+1; end; if st[length(st)-q]='0' then st[length(st)-q]:='1' else st[length(st)-q]:='0'; writeln(st); end; end. |
Сообщ.
#2
,
|
|
|
Это вопрос, ответ, или размышления?
|
Сообщ.
#3
,
|
|
|
Это размышления и вопрос.
Правильно ли программа написана? |
Сообщ.
#4
,
|
|
|
Нет. Достаточно уже того, что длина строки устанавливается один раз в единицу, а потом обращения идут к разным её символам.
Какой метод генерации кодов Грея было задумано использовать? Вот метод, который нетрудно применить к строковому представлению (но он требует хранения сгенерированных кодов): http://neerc.ifmo.ru/wiki/index.php?title=...%80%D0%B5%D1%8F |