ВУЗ:
Составители:
Рубрика:
метку соседней. В случае, если заняты одновременно ячейки и снизу, и
слева, необходимо выбрать наименьшую из меток соседей. Такая ситуация
впервые встречается в ячейке (6,2): слева имеется занятая ячейка,
помеченная 5, снизу – ячейка с меткой 4. Необходимо выбрать метку 4 и в
дальнейшем все время метку 5 заменять на метку 4.
Для запоминания меток, подлежащих замене, вводится
одномерный массив index. Количество элементов массива должно
заведомо превышать количество возможных меток, в большинстве случаев
можно предполагать, что меток будет не больше numx*numy*p.
Изначально каждому элементу массива index присваивается его
порядковый номер:
index=Table[i,{i,numx numy p}];
Если необходимо запомнить, что, например, вместо метки 5 нужно
использовать метку 4, в массиве index элементу номер 5 присваивается
значение 4.
Ниже приведен цикл, который просматривает все ячейки и
проводит их предварительную индексацию.
Do[
If[m[[i,1]]!=0,
If[m[[i-1,1]]!=0,
m[[i,1]]=index[[m[[i-1,1]]]],
mark=mark+1;m[[i,1]]=mark]];
Do[
If[m[[i,j]]!=0,
If[m[[i-1,j]]!=0&&m[[i,j-1]]!=0,
m[[i,j]]=
index[[Min[m[[i-1,j]],m[[i,j-1]]]]];
index[[Max[m[[i-1,j]],m[[i,j-1]]]]]=
Min[m[[i-1,j]],m[[i,j-1]]],
If[m[[i,j-1]]!=0,
m[[i,j]]=index[[m[[i,j-1]]]],
If[m[[i-1,j]]!=0,
m[[i,j]]=index[[m[[i-1,j]]]],
mark=mark+1;m[[i,j]]=mark]]]],
{j,2,numx}],
{i,2,numy}]
При выполнении этой программы может возникнуть ситуация,
когда в массиве index содержится информация о последовательном
переобозначении меток. Например, метку 11 нужно помечать как 7, метку
7 – как 5, метку 5 – как четыре. Поэтому на данном этапе необходимо
пересмотреть массив index для устранения последовательных ссылок.
метку соседней. В случае, если заняты одновременно ячейки и снизу, и слева, необходимо выбрать наименьшую из меток соседей. Такая ситуация впервые встречается в ячейке (6,2): слева имеется занятая ячейка, помеченная 5, снизу – ячейка с меткой 4. Необходимо выбрать метку 4 и в дальнейшем все время метку 5 заменять на метку 4. Для запоминания меток, подлежащих замене, вводится одномерный массив index. Количество элементов массива должно заведомо превышать количество возможных меток, в большинстве случаев можно предполагать, что меток будет не больше numx*numy*p. Изначально каждому элементу массива index присваивается его порядковый номер: index=Table[i,{i,numx numy p}]; Если необходимо запомнить, что, например, вместо метки 5 нужно использовать метку 4, в массиве index элементу номер 5 присваивается значение 4. Ниже приведен цикл, который просматривает все ячейки и проводит их предварительную индексацию. Do[ If[m[[i,1]]!=0, If[m[[i-1,1]]!=0, m[[i,1]]=index[[m[[i-1,1]]]], mark=mark+1;m[[i,1]]=mark]]; Do[ If[m[[i,j]]!=0, If[m[[i-1,j]]!=0&&m[[i,j-1]]!=0, m[[i,j]]= index[[Min[m[[i-1,j]],m[[i,j-1]]]]]; index[[Max[m[[i-1,j]],m[[i,j-1]]]]]= Min[m[[i-1,j]],m[[i,j-1]]], If[m[[i,j-1]]!=0, m[[i,j]]=index[[m[[i,j-1]]]], If[m[[i-1,j]]!=0, m[[i,j]]=index[[m[[i-1,j]]]], mark=mark+1;m[[i,j]]=mark]]]], {j,2,numx}], {i,2,numy}] При выполнении этой программы может возникнуть ситуация, когда в массиве index содержится информация о последовательном переобозначении меток. Например, метку 11 нужно помечать как 7, метку 7 – как 5, метку 5 – как четыре. Поэтому на данном этапе необходимо пересмотреть массив index для устранения последовательных ссылок.
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »