Вопросы с тегами [binary]

1

голосов
4

ответ
40

Просмотры

Объясните, шаг за шагом выполнения кода рекурсии для преобразования десятичной системы счисления в двоичной в Java

Таким образом, это код для преобразования десятичного числа в двоичное число с помощью рекурсии в Java, код работает без каких-либо ошибок. Но я запутался как компилятор выполнить этот код, как я решала его с помощью бумаги, но я не могу понять, как компилятор принимает его и формирует выходной сигнал. Когда я решала его на бумаге решение не имеет никакого смысла для меня. Если кто-нибудь может сказать мне, как это работает, пожалуйста. Были сидит на проблемы более чем на 1 час в настоящее время. Я был бы рад, если кто-то описывает меня шаг за шагом выполнения кода и прибывающих в тот же выход в качестве кода. Использовали рекурсию, как показано ниже. общественного класса RecursionPractice {государственной статической силы основных (String [] арг) {System.out.println ( "Преобразованный номер" + dectoBin (7)); } Частных статических INT dectoBin (Int N) {если (п == 0) возвращает 0; остальное возвращение п% 2 + 10 * dectoBin (п / 2); }} Выход, как ожидается, преобразованный номер 111 Процесс закончил с кодом выхода 0
Rookie Programmer
1

голосов
3

ответ
83

Просмотры

Обнаружение разницы между отрицательным и положительным двоичным числом

Я знаю, что мы можем представить двоичные числа нескольких способов, но я действительно не знаю, как отличить положительное двоичное число от отрицательного. Если у нас есть номер +13, то его двоичное представление выглядит следующим образом: 1101 и его негативное представление выглядит следующим образом: 11101 То, что я понимаю, что если вам нужно, чтобы отличить их, то присутствие 0 важно числом +13: 01101 Тем не менее, я до сих пор не может различить: 11101 /// Вот представление -13 и: 11101 /// Вот представление +29 Я понимаю, что здесь используется другая схема под названием «дополнение до двух», который мне нужен чтобы применить его. Как можно отличить эти два бинарных представления?
3

голосов
1

ответ
16

Просмотры

Is there a way to convert binary data into a data type that will allow ActiveStorage to attach it as an image to my User model

Я поражая апи, чтобы получить изображение, которое они сохранили и использовать его в качестве профиля ПОС для пользователей нашего приложения. Я использую Ruby On Rails и ActiveStorage с АМС прикрепить и сохранить изображение. То, что они посылают назад это: { "Статус" => "общие", "ценности" => [{ "$ OBJECTTYPE" => "данные" "BinaryData" => "/ 9J / 4AAQSkZJRgABAQAASABIAAD / 4QBMRXhpZgAAT .... .KK5tT / 9к =»,„mime_type“=>„изображение / JPEG“,„метаданные“=> {„обрезанные“=> ложным}}]} Я пробовал много разных способов, чтобы прикрепить его и манипулировать данными, такими как просто приложив ее, как это, Base64.decode64, Base64, encode64. Я также попытался создать новый файл, а затем присоединение этого. Вот некоторые примеры: данные = Base64.decode64 (Base64.encode64 (ответ [: selfie_image] [ "ценность" присоединять (out_file) Он держит либо говоря прикрепление равна нулю или, в зависимости от того, как я манипулировать данными он будет говорить не тип заголовка содержание JPEG файла неправильно, и бросить, что как ошибка изображения магическом. Как я могу манипулировать эти данные, чтобы иметь возможность прикрепить его в качестве изображения для наших пользователей с ActiveStorage?
Alex Gonzalez
1

голосов
2

ответ
386

Просмотры

Наименьший элемент в дереве, которое больше, чем х

Если я хочу, чтобы найти наименьший элемент в дереве, который больше, чем элемент х, это было бы правильно способ сделать это? класс Node {INT данных; Узел слева, справа; } Корневой узел; общественное целое successorOf (целое х) {вернуться successorOf (х, корень); } Частное Integer successorOf (целое х, узел п) {если (п == NULL) {возвращение нуль; } Если (х <n.data) {Целое число Рез = successorOf (х, n.left); если (разреш == NULL) Рез = n.data; вернуться Рез; } Еще {вернуть successorOf (х, n.right); }} Я чувствую, что это решение не проверяет все дерево. Помощь очень ценится!
micro
1

голосов
0

ответ
111

Просмотры

Как можно обнаружить переполнение в двоичном умножении?

Я немного отчаянным о том, как обнаружить переполнение при умножении двух 8-разрядных подписанных двоичных чисел? Результат должен также иметь 8-бит. Я умножать их в микропрограмме с помощью сдвига и добавить инструкции. Мой алгоритм работает, как это в псевдокоде для умножения двоичных чисел A * B, кроме того у меня есть аккумулятор: если младший бит Ь = 1 {переложить влево добавить к аккумулятору сдвигу б в правом прыгайте КРП заявление} еще {сдвиг б к правому прыжку, если заявлению} при переключении заполняет нули, и я остановить этот цикл, когда б равен нуль. Когда я смещаться влево я сдвигать значащий бит в бит переноса. Я уже умноженный несколько двоичных чисел, чтобы увидеть, если я могу найти шаблон, когда переполнение должно быть установлено и когда should'nt, но я не мог понять, когда это должно произойти. Я также пытался найти, как команда IMUL Assembler устанавливает свои флаги, но я не мог найти ничего, что помогло. Если у кого есть какие-либо понятия о том, как это работает, я был бы признателен за вашу помощь так много! Заранее спасибо!
Jessica
1

голосов
1

ответ
275

Просмотры

преобразовать без сбалансированного двоичного дерева поиска для красного черного дерева

Можно ли преобразовать нон сбалансированный BST (размер дерева н а высота ч) до RBT во времени complexirty из O (N) и пространство сложность O (H)?
Tal
1

голосов
0

ответ
53

Просмотры

Процент знак бинарный оператор в ggplot R

Я использовал процентные знаки в именах столбцов кадра данных. До сих пор я не встречал каких-либо недостатков, делая это. Теперь я хотел бы создать ggplot с моими данными и получить следующее сообщение об ошибке в связи с использованием процентных знаков: Ошибка в stat_boxplot (геом = «errorbar») + geom_boxplot (): нечисловой аргумент бинарного оператора Есть ли способ до сих пор создать ggplot без необходимости удалить знак процента в имени столбца? Я пытался поставить имя в апострофы, но это не помогло: # «Values_in%» # `Values_in%` Вот кадр данных испытаний: test_data_frame
SCW16
1

голосов
0

ответ
38

Просмотры

Python3.4 упаковка и типа формата с структурой

У меня есть двоичный файл, который я пытаюсь воссоздать путем записи данных в новый файл. Данные, приведенные в нем должны быть сохранены как 32-бит (4 байта) twos- дополняют двоичные целые числа или в виде ASCII символов. Первый 4 байта должен представлять собой целое число 0, то следующие 4 должно быть целое числом 4, следующие 4 должно быть целое число 180. Следующий 4 байта мне нужно упаковать 014500, который представляет HourHourMinuteMinuteSecondSecond. Когда hexdumped, он должен выглядеть следующим образом: 0000000 0000 0000 0004 0000 0000 00B4 ccf8 0001 С последних двух столбцов, представляющих упакованную версию последних 4 байта. Я не могу повторить это. Я попытался упаковка в виде строки и как целое (удаление ведущего нуля для последнего). Я не знаю, что делать. Любые рекомендации будут оценены. Я на 64 битной RHEL Linux, работающая под управлением python3.4. Мой код: #! / USR / бен / python3.
wxman73
1

голосов
0

ответ
72

Просмотры

Почему значения неправильно при анализе двоичных данных с помощью питона CTYPE структур?

Это двоичные данные разбираемый с помощью питона синтаксического анализа файла, содержащего CTYPE структуры. К сожалению, он не возвращает правильные значения. Скорее всего, это происходит потому, что я не уверен на 100%, как интерпретировать эти данные. Эта спецификация описывает, как организован двоичные данные. Я не 100% уверен, как интерпретировать эту спецификацию. Вот что мой питон анализатор выглядит следующим образом: из binascii импорта unhexlify из ctypes импорта * данные = ' % Версия) Это, насколько я был в состоянии идти самостоятельно. Я не могу понять, что это неправильно. Скорее всего из-за того, что я новичок в работе с прошивкой, двоичные данные и т.д. Там нет отслеживающий. И на первый взгляд, это выглядит правильно. Однако, если сравнить его с правильной анализируемой продукции, это выглядит, как, возможно, я не правильно разбора из-за чтения из-за неправильных местах в буфере. Может быть, есть смещение я не рассматриваю? Это пример правильного вывода: 00000000h [1]: SysBlock: 00000000h SysBlkCnt: 00000000h [2]: SysBlock: 00000000h SysBlkCnt: 00000002h [3]: SysBlock: 00000200h SysBlkCnt: 00000000h [4]: ​​SysBlock: 0000004Bh SysBlkCnt: 42000000h [5]: SysBlock: 00000000h SysBlkCnt: 00000000h только из сравнения значений GlobalCntOffset и GlobalCntOffset_SLC от моего выхода и правильного вывода, вы можете увидеть, что у меня есть правильные значения, но в неправильном порядке и немного прочь. Я чувствую, что я очень близко, но я совсем не могу получить его выстроились. Сторона Примечание: SLC Глобальный граф смещение 0x1FC ~ 0x1FF (4 байта) ТСХ Глобальный граф смещение 0x1F8 ~ 0x1FB (4 байта) От смещения 0 ~ 0x1F7, каждый байт означает счетчик для каждого блока супер. Если значение счетчика блока 0xFE (например, блок 0, 1, 8 ...), то они будут помечен как плохой блок.
Radical Edward
1

голосов
0

ответ
381

Просмотры

Иерархическая логистическая регрессия

Я пытаюсь предсказать депрессию с помощью двух количественных переменных и их взаимодействие. Однако, прежде чем я хочу, чтобы посмотреть, сколько разница они объясняют, я хочу, чтобы контролировать несколько переменных. Мой план состоял в том, чтобы построить модель логистической регрессии: Депрессия = Covariates + IV1 + IV2 + IV1: (? Type III суммы квадратов) IV2 К сожалению, R, кажется, не заботится о том порядке, в котором вы добавляете переменные в модель , Есть ли способ, чтобы построить модель логистической регрессии, в которой порядок не имеет значения? Заранее спасибо! -Lukas
Lukas Preis
1

голосов
1

ответ
238

Просмотры

Binary Tree Визуализация - круговое дерево? (QT)

Мне было интересно, если кто имеет какие-либо рекомендации по реализации алгоритма для создания «филогенетического» тип круговой: графическая сцена для бинарного дерева в QT? Что-то вроде этого: кроме со словом этикетки заменены кнопками. Я в настоящее время использую QT Elastic Nodes в качестве шаблона, и удалось создать стандартную визуализацию дерева с динамически установленных расстояний. Но хотелось, чтобы перейти к круговой форме как ссылку выше, если это возможно. Спасибо заранее.
laserfart
1

голосов
0

ответ
36

Просмотры

Как отправить и обрабатывать изображения должным образом между рубином и Node.js размера изображения

Попробуйте отправить файл (изображение) по запросу HTTP от рубинового клиента (с помощью RestClient) на node.js сервер клиентского (Ruby) файл кода изображения является временным файлом, который читал параметр полезной нагрузки в двоичном виде, как так: тс = открытым ( 'HTTP: / /via.placeholder.com/220x220' ) tf.binmode ответ = JSON.parse (RestClient :: Resource.new (URL) .post ({: полезная нагрузка => {: многочастному => верно,: файл => tf.read ,: заголовок => scheduled_post.post.caption}})) tf.read вызов производит: tf.read => «\ XFF \ xD8 \ XFF \ xE0 \ x00 \ x10JFIF \ x00 \ x01 \ x01 \ x00 \ x00 \ x01 \ x00 \ x01 \ x00 \ x00 \ XFF \ XFE \ x00; СОЗДАТЕЛЬ: Г.Д.-JPEG v1.0 (с использованием IJG JPEG v62),Качество = 95 \ N \ XFF \ XDB \ x00C \ x00 \ x02 \ x01 \ x01 \ x01 \ x01 \ x01 \ x02 \ x01 \ x01 \ x01 \ x02 \ x02 \ x02 \ x02 \ x02 \ x04 \ x03 \ x02 \ x02 \ x02 \ x02 \ x05 \ x04 \ x04 \ x03 \ x04 \ x06 \ x05 \ x06 \ x06 \ x06 \ x05 \ x06 \ x06 \ x06 \ а \ т \ б \ x06 \ а \ т \ а \ x06 \ x06 \ Ъ \ v \ Ъ \ т \ N \ N \ N \ N \ N \ x06 \ Ъ \ v \ F \ v \ N \ F \ т \ N \ N \ N \ XFF \ XDB \ x00C \ x01 \ x02 \ x02 \ x02 \ x02 \ x02 \ x02 \ x05 \ x03 \ x03 \ x05 \ п \ а \ x06 \ а \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ XFF \ xC0 \ x00 \ x11 \ Ь \ x03U \ x04 \ XFF \ x03 \ x01 \ "\ x00 \ x02 \ x11 \ x01 \ x03 \ x11 \ x01 \ XFF \ XC4 \ x00 \ x1f \ x00 \ x00 \ x01 \ x05 \ x01 \ x01 \ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 \ x02 \ x03 \ x04 \ x05 \ x06 \ а \ Ь \ т \ п \ v \ XFF \ XC4 \ x00 \ XB5 \ x10 \ x00 \ x02 \ x01 \ x03 \ x03 \ x02 \ x04 \ x03 \ x05 \ x05 \ x04 \ x04 \ x00 \ x00 \ x01} \ x01 \ x02 \ x03 \ x00 \ x04 \ x11 \ x05 \ x12! 1А \ x06 \ x13Qa \ а \ "д \ x142 \ x81 \ x91 \ xÀ1 \ б # B \ XB1 \ xc1 \ x15R \ xd1 \ xF0 $ 3br \ x82 \ т \ п \ x16 \ x17 \ x18 \ x19 \ x1A% & '() * 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz \ x83 \ x84 \ x85 \ x86 \ x87 \ x88 \ x89 \ X8A \ x92 \ x93 \ x94 \ x95 \ x96 \ x97 \ x98 \ x99 \ X9A \ xÀ2 \ XA3 \ xa4 \ xA5 \ xA6 \ xA7 \ xA8 \ xA9 \ Хаа \ XB2 \ xB3 \ XB4 \ XB5 \ XB6 \ xB7 \ XB8 \ xB9 \ Xba \ xc2 \ xc3 \ XC4 \ xC5 \ xc6 \ xC7 \ xC8 \ xC9 \ XCA \ XD2 \ XD3 \ xD4 \ xd5 \ xD6 \ xD7 \ xD8 \ xD9 \ XDA \ xe1 \ XE2 \ XE3 \ xe4 \ xe5 \ XE6 \ xE7 \ X Е8 \ xE9 \ XEA \ xF1 \ xF2 \ xF3 \ XF4 \ xF5 \ XF6 \ xF7 \ XF8 \ xF9 \ РФА \ XFF \ XC4 \ x00 \ x1f \ x01 \ x00 \ x03 \ x01 \ x01 \ x01 \ x01 \ x01 \ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 \ x02 \ x03 \ x04 \ x05 \ x06 \ а \ Ь \ т \ п \ v \ XFF \ XC4 \ x00 \ XB5 \ x11 \ x00 \ x02 \ x01 \ x02 \ x04 \ x04 \ x03 \ x04 \ а \ x05 \ x04 \ x04 \ x00 \ x01 \ x02w \ x00 \ x01 \ x02 \ x03 \ x11 \ x04 \ x05! 1 \ x06 \ x12AQ \ AAQ \ x13 \ "2 \ x81 \ б \ x14B \ x91 \ xÀ1 \ XB1 \ xc1 \ т # 3R \ xF0 \ x15br \ xd1 \ п \ х16 $ 4 \ xe1% \ xF1 \ x17 \ x18 \ x19 \ x1A & '() * 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz \ x82 \ x83 \ x84 \ x85 \ x86 \ x87 \ x88 \ x89 \ X8A \ x92 \ x93 \ x94 \ x95 \ x96 \ x97 \ x98 \ x99 \ X9A \ xÀ2 \ XA3 \ xa4 \ xA5 \ xA6 \ xA7 \ xA8 \ xA9 \ Хаа \ XB2 \ xB3 \ XB4 \ XB5 \ XB6 \ xB7 \ XB8 \ xB9 \ Xba \ xc2 \ xc3 \ XC4 \ xC5 \ xc6 \ xC7 \ xC8 \ xC9 \ XCA \ XD2 \ XD3 \ xD4 \ xd5 \ xD6 \ xD7 \ xD8 \ xD9 \ XDA \ XE2 \ XE3 \ xe4 \ xe5 код ... Сервер (Node.js) на стороне узла, чтобы получить буфер из него сделать так: пусть ЬиЕ = Buffer.from (req.body .payload.file, «двоичный») Если параметр файла выглядит следующим образом: файл: '% 89PNG% 0D% 0A% 1A% 0A% 00% 00% 00% 0DIHDR% 00% 00% 00% DC% 00% 00% 00% DC% 04% 03% 00% 00% 00% E9t% D2% В2 % 00% 00% 00% 1BPLTE% CC% CC% CC% 96% 96% 96% B1% B1% B1% А3% А3% А3% 9C% 9C% 9C% АА% АА% АА% BE% BE% BE % C5% C5% C5% B7% B7% B7% 8E-B% F9% 00% 00% 00% 09pHYs% 00% 00% 0E% C4% 00% 00% 0E% C4% 01% 95% 2B% 0E % 1В% 00% 00% 01aIDATx% 9C% ED% D5% BDJ% С30% 14% 86% E1% 93% F8w% B4L% D1xt% E8% D2% D1% 86BW% BB% 14% B2% 26w% 10 % 2F% 9D% 1D% 08tM% A0% 17% 5E% С9% 21% E9b% 81% B1J% А7% F7% 19% 0E% 89% 3E8F% 27% B2% 22% 02% 00% 00% 00 % 00% 00% 00% 00% 00% 00% 00% 00% 00% 00% 00% 00% 00% FF% EEYW% 22% EB% E6% DD% 7C% FC% D6% 97% B9% D1R % 91R% 85% C8A% A9ZR% A5% CA% 99% D1b% FD.% Е9.% B1% 1E% CE% A5% 84e% AAgF% 8B% 1D% 8E% D2% D7% D1% 93% С4 % 85% F4% 7B% FBmV% B4X% 27% 12% B6a% 26% F21% B6% AF% CC% D2% B5% 95% A0% 9C% 8E% до н.э.% 99% 19% 85% D9% АА % B5% CD-% 9BAN% B5Y% 0AR% E9% DB% E9% С8% DB% 97% С8% A9M% 06I% B4% DD% 8Dm.% B1% 96% E68% 1D% FD% 85CeJ% 94% 9B% 99% 99% E1% 8D% 0B% 2F% 85% 2B% F2% 17% E9% С16% DE% DD% 86gWNz% E3% 8A % до н.э.% 25% DD% CE% D4% B3i% FC% D8% c2z% ED% 5D% 91% B7kav% 90% АА7% F9% FD% 81butE% BERU% D9% C6% B9% 29% 8F% Е3 % 17% A8% DA% 15% F9% 3A% DB7% CC% DC% 1Er% 7B% AD% С7% 29% F6% AF% A5% 2B% F2% B5% Адли% E7% E3S% EEWG% F7 % A9% 5D% 91% AF% C6% 9E% BD% 60% 3C% 89% F7% 8B1-% A4% A9% A6% 23o% 9DR *% 0BMQ% 8FK% 3F% 7C% 92% 7E3% 1DY % B3% DD% B2% D5% D8% F3% FE% A7% B6% AD% ED% 3D6% 19% 01% 00% 00% 00% 00% 00% 00% 00% 00% 00% 00% 00 % 00% 00% 00% 00% 98% Е7% 07M% 24E% C6% 29% 0A% 10% B4% 00% 00% 00% 00IEND% АЕБ% 60% 82' Но когда я использую буфер после того, как в image- размер я получаю следующее сообщение об ошибке: TypeError: неподдерживаемый тип файла: не определено (файл не определено)не определено)не определено)
Juriy
1

голосов
1

ответ
425

Просмотры

Печать двоичного дерева поиска в виде одной строки

Там проблема практика, что я работаю на который был меня смущает. Определим функцию treeLevelOrder, которая удовлетворяет следующему требование: Если Q представляет собой бинарное дерево поиска целых чисел, то treeLevelOrder (Q) является строковое представление содержимого Q в соответствии с их уровнем в дереве. Мы получаем это дерево в качестве примера 9 / \ 5 16 / \ / \ 1 7 12 19 Значение выражения treeLevelOrder (Q), в этом случае будет «[9,5,16,1,7,12,19] ». Я видел подобные проблемы, но они не следуют в том же формате, что я ищу, желая, чтобы напечатать по заказу уровня или упорядоченных кортежей. Вот некоторые примеры кода я работал на: частный Строка treeLevelOrder (Node Q) {если (Q.left == NULL && Q.right == NULL) возвращает "[" + Q.datum + " / * Функция для печати заказа уровня обхода дерева * / пустоты printLevelOrder () {INT = высота (корень); Int я; для (я = 1; я rheight) возвращение (lheight + 1); остальное возвращение (rheight + 1); }} / * Печать узлов на данном уровне * / недействительным printGivenLevel (корневой узел, уровень Int) {если (корень == NULL) возвращение; если (уровень == 1) System.out.print (root.data + ""); иначе, если (уровень> 1) {printGivenLevel (root.left, уровень-1); printGivenLevel (root.right, уровень-1); } } Есть идеи? если (уровень == 1) System.out.print (root.data + ""); иначе, если (уровень> 1) {printGivenLevel (root.left, уровень-1); printGivenLevel (root.right, уровень-1); } } Есть идеи? если (уровень == 1) System.out.print (root.data + ""); иначе, если (уровень> 1) {printGivenLevel (root.left, уровень-1); printGivenLevel (root.right, уровень-1); } } Есть идеи?
009
1

голосов
0

ответ
245

Просмотры

Динамически построения бинарного дерева с использованием «Node» структура питона

Я пытаюсь преобразовать математическое выражение в двоичную структуру дерева, используя тип «Узел» в библиотеке ZSs. Я использую этот особый тип «Node», потому что я хочу, чтобы вычислить дерево редактирования расстояния с помощью функции в той же библиотеке. Математические выражения могут быть в различных форматах, например, (28 + 32), (((75 + 2) - 21) + (94 - 90)), ((53 + 67) / 2), ((40 * 51) / ( 86 - 52)) и т.д. деревья бинарных деревьев. Корневой узел всегда является оператором, а листья всегда числа. «Узел» структура дерева всегда Узел (root_node, [LeftChild, RightChild]). Ниже приведены несколько примеров того, как выражение представляется в виде дерева. Ниже то, что мой код в настоящее время делает (полный код): Прочитал в строковом выражении и разделить его на лексемы хранить индексы операторов в op_index Случай 1: добавление (пункт [п]), если (IsInt (пункт [п-1]) == TRUE): left_tree.append (Узел (пункт [п-1], [])) остальное: left_tree.append (Узел (пункт [ п + 1], [])) right_tree.append (а) final_tree = Узел (top_operator, [left_tree [0], right_tree [0]]) возвращение final_tree t1 = generateTree ( "(2 + 1)") t2 = generateTree ( "(5 + (2 + 1))") editDistance = simple_distance (t1, t2) печать (editDistance) # возвращает 2 я пытался писать код для двух типов выражений. Тем не менее, я пытаюсь выяснить способ, чтобы написать это в более общем виде, потому что, когда выражения становятся все более сложными, трудно построить дерево статическим способом. left_tree.append (Узел (пункт [п + 1], [])) right_tree.append (а) final_tree = Узел (top_operator, [left_tree [0], right_tree [0]]) возвращение final_tree t1 = generateTree ( "(2 + 1) ") t2 = generateTree (" (5 + (2 + 1)) ") editDistance = simple_distance (t1, t2) печать (editDistance) # возвращает 2 я пытался писать код для двух типов выражений. Тем не менее, я пытаюсь выяснить способ, чтобы написать это в более общем виде, потому что, когда выражения становятся все более сложными, трудно построить дерево статическим способом. left_tree.append (Узел (пункт [п + 1], [])) right_tree.append (а) final_tree = Узел (top_operator, [left_tree [0], right_tree [0]]) возвращение final_tree t1 = generateTree ( "(2 + 1) ") t2 = generateTree (" (5 + (2 + 1)) ") editDistance = simple_distance (t1, t2) печать (editDistance) # возвращает 2 я пытался писать код для двух типов выражений. Тем не менее, я пытаюсь выяснить способ, чтобы написать это в более общем виде, потому что, когда выражения становятся все более сложными, трудно построить дерево статическим способом.
SriniShine
1

голосов
0

ответ
11

Просмотры

Стиль представить элемент в повторителе

Можно изменить размер и ширину для этого изображения, когда я показываю его? Как хранится в виде изображения, и я не могу изменить его гиперссылки и использовать IMG тег.
N.M
1

голосов
1

ответ
110

Просмотры

удалить поддерево из BST и сбалансировать дерево во время LogN

Возможно ли, что мы могли бы выполнить м вставки и удаления на сбалансированном дереве двоичного поиска таким образом, что операция удаления удаляет узел и все поддерево ниже него, и после этого сбалансировать его? Весь процесс быть в сделано в амортизационной O (журнал п) на шаг?
Prasad Chaudhari
1

голосов
1

ответ
199

Просмотры

Java GZip делает небольшие различия при сжатии файла и распаковку его снова

После недели работы я разработал двоичный формат файлы, и сделал читатель Java для него. Это просто эксперимент, который хорошо работает, если я не буду использовать функцию сжатия GZip. Я назвал свой бинарный тип MBDF (минимальная Двоичный формат базы данных), и он может хранить 8 различных типов: Integer (Там нет ничего, как байт, короткие, длинные или что-нибудь в этом роде, так как она хранится в гибком пространстве (большие числа взять больше пространство)) Поплавок-32 (32-бит формат с плавающей запятой, например типа поплавка в Java) поплавковый-64 (64-бит формат с плавающей запятой, например двойного типа в Java) строка (строка в UTF-16 формате) Логический нуль (всего указывает нулевое значение) Array (что-то вроде ArrayList в Java) Соединение (A String - карта объекта) Я использовал эти данные в качестве тестовых данных: СОЕДИНЕНИЕ {float1: FLOAT_32 3,3 bool2: BOOLEAN верно float2: FLOAT_64 3,3 int1: INTEGER 3 СОЕДИНЕНИЯ 1: СОЕДИНЕНИЕ {XML: STRING "две длиной соединения" ИНТ: INTEGER 23} string1: "Привет, мир!" STRING строка2 STRING "3" arr1: ARRAY [STRING "Привет, мир!" ЦЕЛАЯ 3 СТРОКА «3» FLOAT_32 3,29 FLOAT_64 249,2992 БУЛЕВЫХ истинно СОЕДИНЕНИЕ {ул: СТРОКА «одна длиной соединения»} логического значения FALSE NULL, NULL] bool1: логическое значение FALSE null1: NULL, NULL} Ключ XML в соединении имеет значения !! Я сделал файл из него с помощью этого кода Java: MBDFFile.writeMBDFToFile ( "/Users/<anonymous>/Documents/Java/MBDF/resources/file.mbdf", b.makeMBDF (ложь)); Здесь переменная Ь является MBDFBinary объект, содержащий все данные, приведенные выше. С помощью функции makeMBDF он генерирует ISO 8859-1, закодированную строку и, если данное логическое значение верно, то сжимает строку с помощью GZip. Затем, при написании, дополнительная информация символ добавляется в начале файла, содержащий информацию о том, как читать его обратно. Затем, после записи файла, я прочитал его обратно в Java и разобрать его MBDF mbdf = MBDFFile.readMBDFFromFile ( "/ Users // Документы / Java / MBDF / ресурсы / file.mbdf"); System.out.println (mbdf.getBinaryObject () синтаксический анализ ().); Это выводит именно ту информацию, упомянутую выше. Тогда я пытаюсь использовать сжатие: MBDFFile.writeMBDFToFile ( "/Users//Documents/Java/MBDF/resources/file.mbdf", b.makeMBDF (истина)); Я делаю точно так же, чтобы прочитать его обратно, как я сделал с несжатого файла, который должен работать. Он печатает эту информацию: СОЕДИНЕНИЕ {float1: FLOAT_32 3. 3 bool2: BOOLEAN правда float2: FLOAT_64 3,3 int1: INTEGER 3 СОЕДИНЕНИЯ 1: СОЕДИНЕНИЕ {XuT: STRING 'две длина соединения' INT: INTEGER 23} string1: 'Привет, мир!' STRING строка2 STRING '3' arr1: 'Привет, мир!' ARRAY [STRING ЦЕЛОЕ 3 СТРОКА «3» FLOAT_32 3,29 FLOAT_64 249,2992 БУЛЕВЫ истинно СОЕДИНЕНИЕ {ул: СТРОКА «одна длина соединения»} логическое значение FALSE NULL, NULL] bool1: логическое значение FALSE null1: NULL, NULL} Сравнивая его с исходной информации, имя XML изменено на XuT по какой-то причине ... После некоторых исследований я обнаружил небольшие различия в двоичных данных между перед сжатием и после сжатия. Такие модели как 110011 изменений в 101010. Когда я делаю имя XML больше, как xmldm, она просто обрабатывается как xmldm по какой-то причине. В настоящее время я увидел, что проблема происходит только на имена с тремя персонажами. Непосредственно сжатия и сформированная строка (без сохранения его в файл и чтения, что) делает работу, поэтому, возможно, ошибка вызвана кодированием файла. Насколько я знаю, выходная строка в формате ISO 8859-1, но я не мог получить файл, кодирующий право. При чтении файла, он читается, как это должно быть прочитано, и все символы читаются как ISO 8859-1 символы. Я кое-что может быть причиной, я на самом деле не знаю, как проверить их: Выход GZip имеет другую кодировку, чем несжатый кодирования, вызывая небольшие различия при сохранении в виде файла. Файл хранится в формате UTF-8, просто не обращая внимания на заказ, чтобы быть ISO 8859-1 кодирования (Дон» знаю, как объяснить :)) Существует небольшая ошибка в библиотеках Java GZIP. Но какой из них является истинным, и если ни один из них не является правильным, какова истинная причина этой ошибки? Я не мог понять это прямо сейчас. Класс MBDFFile, чтение и хранение файлов: / * MBDFFile.java * / пакет com.redgalaxy.mbdf; импорт java.io. *; импорт java.nio.file.Files; импорт java.nio.file.Path; импорт java.nio.file.Paths; общественного класса MBDFFile {государственной статической MBDF readMBDFFromFile (String имя файла) бросает IOException {// FileInputStream есть = новый FileInputStream (имя файла); // InputStreamReader ISR = новый InputStreamReader (есть, "ISO-8859-1"); // BufferedReader уш = новый BufferedReader (ISR); // // StringBuilder строитель = новый StringBuilder (); // // Строка CurrentLine; // // пока ((CurrentLine = br.readLine ())! = NULL) {// builder.append (CurrentLine); // builder.append ( "\ п"); //} // // builder.deleteCharAt (builder.length () - 1); // // // br.close (); Путь Путь = Paths.get (имя файла); байт [] = данные Files.readAllBytes (путь); вернуть новый MBDF (новый String (данные "ISO-8859-1")); } Частных статических аннулируются WriteToFile (String имя файла, байт [] .TXT) бросает IOException {// BufferedWriter писатель = новый BufferedWriter (новый FileWriter (имя файла)); //// FileWriter писатель = новый FileWriter (имя файла); // writer.write (txt.getBytes ( "ISO-8859-1")); // writer.close (); // PrintWriter Pw = новый PrintWriter (имя файла, "ISO-8859-1"); FileOutputStream поток = новый FileOutputStream (имя файла); stream.write (TXT); поток. близко(); } Государственной статической силы writeMBDFToFile (String имя файла, MBDF информация) броски IOException {WriteToFile (имя файла, info.pack () GetBytes ( "ISO-8859-1").); }} Функция пакета генерирует окончательную строку для файла, в формате ISO 8859-1. Для всех других кодов, обратитесь мой репозиторий MBDF GitHub. Я заметил, код я пытался, пытаясь показать, что я пытался. Мое рабочее место: - Macbook Air '11 (High Sierra) - IntelliJ сообщество 2017,3 - JDK 1.8 Я надеюсь, что это достаточно информации, на самом деле это единственный способ дать понять, что я делаю, и что именно не работает. Edit: MBDF.java / * MBDF.java * / пакет com.redgalaxy.mbdf; импорт java.io.IOException; импорт java.io.UnsupportedEncodingException; класс MBDF общественности {личные данные строки; частный InfoTag тег; общественных MBDF (данные String) {this.tag = новый InfoTag ((байт) data.charAt (0)); this.data = data.substring (1); } Общественного MBDF (строковые данные, InfoTag теги) {this.tag = метка; this.data = данные; } Общественного MBDFBinary getBinaryObject () бросает IOException {строка несжатые = данные; если (tag.isCompressed) {несжатый = GZipUtils.decompress (данные); } Двоичные двоичный = getBinaryFrom8Bit (несжатый); вернуть новый MBDFBinary (binary.subBit (0, binary.getLen () - tag.trailing)); } Общественный статический Binary getBinaryFrom8Bit (String s8bit) {попробуйте {байт [] байт = s8bit.getBytes ( "ISO-8859-1"); возвращать новые двоичные (байт, bytes.length * 8); } Задвижка (UnsupportedEncodingException игнорируется) {// Это не произойдет, потому что кодирующая «ISO-8859-1» всегда поддерживается. вернуть новый двоичный (новый байт [0], 0); }} Общественности статической строки get8BitFromBinary (Binary двоичный) {попробуйте {вернуть новую строку (binary.getByteArray (), "ISO-8859-1"); } Задвижка (UnsupportedEncodingException игнорируется) {// Это не произойдет, потому что кодирующая «ISO-8859-1» всегда поддерживается. вернуть ""; }} / * * Добавляет ведущие нули в двоичную строку, таким образом, чтобы конечное количество бит равно 16 * / частная статическая Строка addLeadingZeroes (Строка бин, логическое is16) {INT Len = bin.length (); длинное количество = (длинный) (is16 16: 8?) - лен; // Создание нулей и присоединять двоичные строки StringBuilder обнуляет = новый StringBuilder (); для (INT I = 0; я <сумма; я ++) {zeroes.append (0); } Zeroes.append (бин); вернуть zeroes.toString (); } Строка пакет общественности () {вернуться tag.getFilePrefixChar () + данные; } Строка GetData общественности () {возвращение данных; } Общественного InfoTag GetTag () {возвращение тегов; }} Этот класс содержит метод пакета (). данные уже сжаты здесь (если это должно быть). Для других классов, пожалуйста, смотрите в хранилище GitHub, я не хочу, чтобы мой вопрос слишком долго. вернуть zeroes.toString (); } Строка пакет общественности () {вернуться tag.getFilePrefixChar () + данные; } Строка GetData общественности () {возвращение данных; } Общественного InfoTag GetTag () {возвращение тегов; }} Этот класс содержит метод пакета (). данные уже сжаты здесь (если это должно быть). Для других классов, пожалуйста, смотрите в хранилище GitHub, я не хочу, чтобы мой вопрос слишком долго. вернуть zeroes.toString (); } Строка пакет общественности () {вернуться tag.getFilePrefixChar () + данные; } Строка GetData общественности () {возвращение данных; } Общественного InfoTag GetTag () {возвращение тегов; }} Этот класс содержит метод пакета (). данные уже сжаты здесь (если это должно быть). Для других классов, пожалуйста, смотрите в хранилище GitHub, я не хочу, чтобы мой вопрос слишком долго.
RgSW
1

голосов
1

ответ
59

Просмотры

Вы можете ввести двоичные данные в командной строке с Windows?

Допустим, что я бегу консольное приложение, которое принимает входные данные от пользователя. Есть ли способ для отправки двоичных данных в программу, например, я могу отправить следующие три байта в программу: 0x80 0x12 0xF4
user8240761
1

голосов
1

ответ
36

Просмотры

Значение неправильно Рекурсия

У меня есть небольшая проблема с моей функцией, функция делает преобразование десятичного в двоичный, но напечатать значение в обратном направлении, например, следующий код: Я прохожу 28 в двоичный, которые должны быть 0000011100, но я вернусь 0011100000 общественных недействительными бинарным ( Int N, обугливается [] массив, Int битов) {если (0 == п) {вернуться; } INT височной = п; п = п / 2; если (временная% 2 == 0) {массив [array.length - (bits--)] = '0'; } Еще {массив [array.length - (bits--)] = '1'; } двоичных (п, массив, биты); }
Patrick
1

голосов
1

ответ
607

Просмотры

Обрезка конкретного цвета региона и удалить шумные регионы (Python + OpenCV)

У меня есть проблемы при получении бинарного изображения из цветных изображений. Функция cv2.inRange () используется для получения маски изображения (с пороговыми предложениями этого типа), и я хочу, чтобы удалить ненужные части, сводя к минимуму эрозии маски изображений. Самая большая проблема заключается в том, что маски не регулярно извлекаются. Образцы Crack: Типичный один Ideal один: Мой первый объект делает второй снимок как третий. Я предполагаю получать контур, который имеет самую большую площадь и удаление других контуров (также для маски) будет работать. Но не могу не найти, как. Во-вторых Probleme является то, что идея, которую я описал выше, не будет работать для первого изображения (трещины). Такого рода изображения могут быть отброшены. Но в любом случае он должен быть обозначен как трещины. Постольку, у меня нет идей для этого. То, что я сделал вот входного изображения и коды 42_1.jpg класса Real: __ex_low = np.array ([100,30,60]) __ex_high = нп.
YYK
1

голосов
1

ответ
65

Просмотры

Бинарные операции с типизированных массивов

Я пытаюсь разобрать двоичное сообщение. Я сделал функцию для получения короткого значения, но это не работает, когда второй байт является отрицательным. Например: функция bytesToShort (обр, смещение) {возвращение (обр [смещение]
Grubergen
1

голосов
1

ответ
33

Просмотры

Функция вставки сохраняет воссоздание корневого узла

Я пытаюсь создать функцию нерекурсивна вставка (). Единственный пример, который я имею в книге является рекурсивным, и я стараюсь, чтобы преобразовать его. Точно так же у вас есть представление о том, что я пытаюсь сделать, и почему я буду включать инструкции. Написать класс для реализации простого двоичного дерева поиска, способного хранить номера. Класс должен иметь функции-членов: аннулируются вставки (двойной х) поиск BOOL (двойной х) аннулируется Симметричным (вектор & v) Функция вставки не должен использовать рекурсию, прямо или косвенно, путем вызова рекурсивной функции. Существует больше, но я думаю, что это дает представление за то, что я спрашиваю о. В настоящее время функция просто держать воссоздание корневого узла. Вот что у меня есть. Edit: Добавление полного кода для ясности. #include "stdafx.h" #include #include класс BinaryTree {частное: TreeNode структура {двойное значение; TreeNode * влево; TreeNode * право; TreeNode (двойной значение1, TreeNode * left1 = nullptr, TreeNode * RIGHT1 = nullptr) {значение = значение1; влево = left1; право = RIGHT1; }}; TreeNode * корень; // указатель на корень дерева поиска BOOL (двойной х, TreeNode * т) {в то время как (т) {станд :: соиЬ значение) {станд :: соиЬ справа); (Значение корне->) v.push_back; }} * /}; INT основных () {BinaryTree т; станд :: соиЬ TreeNode * т) {в то время как (т) {станд :: соиЬ значение) {станд :: соиЬ справа); (Значение корне->) v.push_back; }} * /}; INT основных () {BinaryTree т; станд :: соиЬ TreeNode * т) {в то время как (т) {станд :: соиЬ значение) {станд :: соиЬ справа); (Значение корне->) v.push_back; }} * /}; INT основных () {BinaryTree т; станд :: соиЬ
Kenneth Freeman
1

голосов
0

ответ
48

Просмотры

Выборка различных двоичных строк

Что бы быть хорошим способом для выборки N двоичных строк длины, которая максимизирует их «разнообразие»? Самый простой способ сгенерировать двоичную строку длиной д, чтобы установить каждый бит независимо друг от друга равномерно к 0 или 1. Но это было бы эквивалентно выборкой из пространства {0,1} ^ D с заменой: некоторые из выбранных строк могут являться так же. Я хотел бы, чтобы выбрать двоичную строку, так что сходство между строками мало. Так, например, за счет максимизации суммы всех Хэмминга расстояний, или путем максимизации минимального расстояния Хэмминга и т.д. Отбор проб без замены увеличит разнообразие. (Например, минимально возможное расстояние Хэмминга будет идти от 0 до 1) Как дальнейшее увеличение разнообразия?
eclique
1

голосов
1

ответ
34

Просмотры

Могу ли я использовать двоичный или восьмеричный в JavaScript?

Я хочу использовать двоичный или восьмеричный код, как этот шестнадцатеричный код, вар аб = [ «\ x61»]; document.write (аb [0]);
Rabib
1

голосов
1

ответ
132

Просмотры

Binary Search Tree searching a string by letter [closed]

Привет Я начинающий программист пытается выяснить, как искать строки в бинарном дереве поиска, используя только первую букву начинается с, например, если просто искать букву «L», это должно привести все имена, начинающиеся с это письмо. Ниже приведен метод, как мы ищем полное имя до сих пор. общественного недействительными searchByName () бросает IOException // Моя гордость и радость {Строка выхода = NULL; // для выхода из внутреннего цикла, а Логическое конец = ложь; // выход внешнее время цикла в то время как (конец = верно!) // Поиск автора по первой петле имя {@SuppressWarnings ( «ресурс») клавиатуры сканер = новый сканер (System.in); System.out.printf ( «Пожалуйста, введите Авторской Последний и первый: (пожалуйста, введите в этом формате (Johnson, Cevion) ​​\ п»); имя String = клавиатура. nextLine (); System.out.println ( «Это то, что мы нашли !! \ п»); System.out.println (findFullName (название)); System.out.printf ( «Вы хотите снова искать ?? Да или Нет \ п»); // поиск снова выход из цикла = keyboard.nextLine (); (! Exit.equalsIgnoreCase ( "да") && exit.equalsIgnoreCase ( "нет")), а // да или нет только петли {System.out.printf ( "Invaild выбор пожалуйста введите: Да или Нет \ п"); Выход = keyboard.nextLine (); } Если (exit.equalsIgnoreCase ( "да")) конец = ложь; если (exit.equalsIgnoreCase ( "нет")) конец = TRUE; }} System.out.printf ( «Вы хотите снова искать ?? Да или Нет \ п»); // поиск снова выход из цикла = keyboard.nextLine (); (! Exit.equalsIgnoreCase ( "да") && exit.equalsIgnoreCase ( "нет")), а // да или нет только петли {System.out.printf ( "Invaild выбор пожалуйста введите: Да или Нет \ п"); Выход = keyboard.nextLine (); } Если (exit.equalsIgnoreCase ( "да")) конец = ложь; если (exit.equalsIgnoreCase ( "нет")) конец = TRUE; }} System.out.printf ( «Вы хотите снова искать ?? Да или Нет \ п»); // поиск снова выход из цикла = keyboard.nextLine (); (! Exit.equalsIgnoreCase ( "да") && exit.equalsIgnoreCase ( "нет")), а // да или нет только петли {System.out.printf ( "Invaild выбор пожалуйста введите: Да или Нет \ п"); Выход = keyboard.nextLine (); } Если (exit.equalsIgnoreCase ( "да")) конец = ложь; если (exit.equalsIgnoreCase ( "нет")) конец = TRUE; }} )) Конец = TRUE; }} )) Конец = TRUE; }}
Marty
1

голосов
1

ответ
23

Просмотры

BST delete method doesn't delete the first node inserted

Я не могу понять это ... Я могу вставить и сортировать детали без вопроса, я могу удалить узлы мимо первой вставки, а на специальном случае, когда я пытаюсь удалить первый узел вставленный, чтобы начать дерево, он не делает ничего. Я не понимая, почему эта проблема происходит, любая помощь, чтобы выяснить логику ценится. Разбавленная версия моей коды размножается проблема. https://pastebin.com/hxcqpG1U Вот мой метод удаления: общественного недействительными удалить (ключ KeyComp) {удалить (_root, ключ); } Частный узел удаления (корневой узел, ключ KeyComp) {// TO-DO: Удаление элемента в таблице, дан ключ // пустое дерево, если (корень == NULL) возвращает корень; если (key.keyCompareTo (root.data) <0) root.left = удалить (root.left, ключ); иначе если (key.keyCompareTo (root.data)> 0) root.right = удалить (корень. право, ключ); еще {// узел только с одним ребенком или нет ребенка, если (root.left == NULL) возвращает root.right; иначе если (root.right == NULL) возвращения root.left; // узел с двумя детьми: Получить заказовМои преемника (наименьшее // В правом поддереве) root.data = getMin (root.right) .data; // Удаление симметричного преемника root.right = удалить (root.right, root.data); } Вернуть корень; } // Удаление симметричного преемника root.right = удалить (root.right, root.data); } Вернуть корень; } // Удаление симметричного преемника root.right = удалить (root.right, root.data); } Вернуть корень; }
1

голосов
2

ответ
377

Просмотры

Byte массив в Python принимает только целые числа без знака

Я работаю на аудио кодеков в Python (Хлоп), используя массивы байтов для редактирования отдельных байтов данных из звукового файла. У меня есть определенное шифрование в виду, что требует от меня для выполнения битовых мудрыми операций на отдельных байтов, хранящихся в байтовом массиве. Одним из таких операций является оператор ~ (побитовое НЕ), который по существу изменяет бит (b'0001 становится b'1110). Проблема заключается в том, когда вы ссылаетесь на один элемент массива байт, он возвращает Int (делает Python по умолчанию считает нетипизированными целых 8 бит данных?). Целые числа в Python, по умолчанию Подписанные (я не думаю, что целые числа без знака, даже существуют в Python). При попытке выполнить побитовое НЕ на байт в байт-массив, вы получите следующее сообщение об ошибке: >>> массив [0] = ~ массив [0] Traceback (самый последний вызов последнего): Файл «», линия 1, в ValueError: байты должны находиться в диапазоне (0, 256) Это потому, что он ожидает беззнаковое целочисленное значение между 0-255. Как преобразовать подписанную Int в беззнаковый междунар так, что биты, используемые для представления оба значений остаются теми же? ура
jmkmay
1

голосов
4

ответ
452

Просмотры

Найти все объекты в ArrayList, которые удовлетворяют список критериев в Java

Для конкретного примера, у меня есть класс Город, который выглядит следующим образом: общественный класс City {частного имя String; частное ИНТ общее; // общая численность населения частные ИНТЫ мужчины; // мужского населения частные ИНТ женщина; // женского населения // конструктор и добытчики ...} Я хочу написать метод, который может взять список объектов города и перечень критериев (всего, мужчины, женщины) и вернуть все объекты внутри, которые удовлетворяют этим критериям. Каждый критерий имеет диапазон, так что я могу, например, поиск по всем городам, который имеет общую численность населения между 1000, 2000 и женским населением в возрасте от 200, 300. Я думаю, что мы можем создать класс критерий, который выглядит следующим образом: общественный класс Критерий {Строка крит; ИНТ мин; INT макс; Критерий общественного (String крит, Int мин, Int макс) {this.crit = Crit; this.min = мин; this.max = макс; }} Тогда мы можем передать список объектов этих Criterion с диапазоном от метода. Это хороший способ решить эту проблему? Что мне нужно сделать, чтобы отсортировать первую, чтобы использовать бинарный поиск? Какова общая идея для решения этой проблемы?
Huy Tran
1

голосов
1

ответ
77

Просмотры

Двоичный поиск рекурсивное количество вызовов?

Так что мне было интересно, в моей книге, рекурсивный бинарный поиск осуществляется следующим образом: частный статический INT бен (ИНТ [] обр, внутр низкий, высокий INT, INT цель) {счетчик ++; // игнорировать это, это было подсчитать, сколько вызовов эта функция invocated если (низкая> высокая) возвращение -1; еще {INT = середина (низкая + высокая) / 2; если (цель == обр [середины]) вернуться в середине; иначе, если (цель <обр [середины]) возвращение бен (обр, низкие, средние-1, мишень); остальное возвращение бен (аранжировка, середина + 1, высокая, цель); }} И он говорит, что «Если п число элементов, является степенью 2, выражают п как сила 2 ... Случай 3: Ключ не в массиве, а его значение лежит между а [0 ] и [п-1]. при этом число сравнений, чтобы определить, что ключ не в массиве равно экспоненте. Там будет один меньше, чем сравнение в худшем случае «.
chateau1942
1

голосов
0

ответ
54

Просмотры

Указатель Приведение типов: ИНТ на короткое замыкание в C

Я ожидаю, что выход будет 131200 (2 ^ 17 + 2 ^ 7), а не 2. Имеет смысл в теории, но он не работает. Битовый образ обр [3] после типажей линии указателя будет что-то вроде - [00000000 00000010 00000000 10000000]. (Пожалуйста, скажите мне, если я ошибаюсь где-то.) #Include Int основной (вакуум) {INT обр [5]; обр [3] = 128; ((Короткий *) обр) [6] = 2; Е ( "% г \ п", обр [3]); }
Harry Sandhu
1

голосов
1

ответ
31

Просмотры

Не удается удалить грандиозную родительского узла в программе BST

Эта программа Binary дерево поиска сбой при попытке удалить узел, имеющий внуков. Такой узел «80». Я могу удалить любой другой узел успешно и выполнять другие операции, такие как обход, найти высоту и нахождение минимального или максимального элемента. Пожалуйста, посмотрите на код и скажите мне, если мне нужно предоставить любую другую информацию. структура узла {INT данных; структура узла * левый, правый *; }; структура узла * корень = NULL; INT основных () {корень = вставка (корень, 100); вставки (корень, 80); вставки (корень, 10); вставки (корень, 40); вставки (корень, 90); вставки (корень, 30); вставки (корень, 120); вставки (корень, 140); Симметричный (корень); Е ( "Мин:% d Макс:% d \ п", FindMin (корень), FindMax (корень)); удалить (корень, 80); Е ( "После удаления: \ п"); Симметричный (корень); возвращать 0; } Структура узла * вставки (структура узла * узел, данные INT) {если (узел == NULL) {возвращение newnode (данные); } Иначе, если (данные <node-> данные) {node-> влево = вставки (node-> влево, данные); } Иначе, если (данные> node-> данные) {node-> вправо = вставка (node-> правильные, данные); } Вернуть узел; } Структура узел * newnode (интермедиат данные) {структура узел * TMP = (структура узел *) таНос (SizeOf (структура узел)); tmp-> данные = данные; tmp-> левый = tmp-> вправо = NULL; вернуться TMP; } Структура узел * Симметричный (структура узел * корень) {если (корень! = NULL) {Симметричного (корне-> слева); Е ( "% d \ п", корне-> данные); Симметричный (корне-> справа); }} Структура узла * FindMin (структура узла * корень) {если (корень == NULL) {Е ( "Дерево пусто! \ П"); вернуться -1; (! Корне-> левый = NULL)}, а {корень = корне-> слева; } Вернуть корне-> данные; } Структура узла * FindMax (структура узла * корень) {если (корень == NULL) {Е ( "Дерево пусто! \ П"); вернуться -1; } В то время как (корне-> правильно! = NULL) {корень = корне-> вправо; } Вернуть корне-> данные; } Структура узла * удалить (структура узла * корень, внутр данные) {если (корень == NULL) {Е ( "Дерево пусто! \ П"); вернуться -1; } Иначе, если (данные <корне-> данные) {корне-> влево = удалить (корне-> влево, данные); } Еще если (данные> корне-> данные) {корне-> вправо = Удалить (Root-> правильные, данные); } Еще {если (корне-> слева == NULL && корне-> правый == NULL) {свободный (корень); корень = NULL; } Иначе, если (корне-> левый == NULL) {структура узла * TMP = корень; // TMP = корень; корень = корне-> вправо; бесплатно (TMP); } Иначе, если (корне-> правый == NULL) {структура узла * TMP = корень; // TMP = корень; корень = корне-> слева; бесплатно (TMP); } Еще {структура узла * TMP = FindMin (корне-> справа); Root-> данные = tmp-> данные; корне-> вправо = удалить (корне-> правый, tmp-> данные); }} Возвращение корня; }
LetmeLearn0089
1

голосов
2

ответ
135

Просмотры

ZigZag бинарного дерева обход в C ++

Я пытаюсь попытаться зигзагом обхода бинарного дерева. Но я застрял на одном типе тестовых случаев, то есть, когда дерево не сбалансировано. Если я даю ввод как 3 3-20 нуля нуль 15 7 для бинарного дерева, которое выглядит следующим образом: 3 / \-20 / \ 15 7 я получаю выходной: 3 20 9 0 Если мой вход был 3-20 1 нулевых 15 7, мой выход: 3 20 9 1 0 Ниже мой код. структура узла {INT данных; узел * влево; узел * право; }; недействительные порядка (узел * корень, карты & ANS, уровень INT, INT к) {если (корень == NULL) {возвращение; } Если (к == 0) {если (корне-> левый! = NULL) {ANS [+] 1 уровень .push_back (корне-> лево-> данных); порядок (корне-> слева, ANS, уровень + 1, 1); } Если (корне-> правый! = NULL) {ANS [+] 1 уровень .push_back (корне-> право-> данных); порядок (корне-> вправо, ANS, уровень + 1, 1); }} Иначе, если (к == 1) {порядка (корне-> слева, ANS, уровень + 1, 0); порядок (корне-> вправо, ANS, уровень + 1, 0); если (! корне-> вправо = NULL) анс [+ 1] уровень .push_back (корне-> право-> данные); если (корне-> левый! = NULL) ANS [+] 1 уровень .push_back (корне-> лево-> данных); }} Вектор зигзагообразный (узел * корень) {карты ANS; вектор зиг; ANS [0] .push_back (корне-> данные); порядок (корень, ANS, 1, 1); для (авто он = ans.begin (!), это = ans.end (); это ++) {// преобразование карты в вектор zig.push_back (IT-> второй); } Вернуть зиг; } Насколько я понимаю, если вход нуль мой код не должен возвращать ничего и продолжить выполнение дальнейших узлов. Я не могу понять свою ошибку. Кто-нибудь может мне помочь? ТИА!
Akriti Anand
1

голосов
1

ответ
443

Просмотры

Пролог бинарное дерево поиска

Я столкнулся с этой проблемой: написать программу PROLOG, что данная бинарное дерево с целыми числами, хранящихся в узлах. Напишите программу, которая возвращает максимальное значение, хранящееся в дереве. Например, если входной сигнал [4, [1, [], []], [7, [], []]] алгоритм должен возвращать 7. Я думаю, я должен использовать BFS. Так что это мои лекционные заметки о BFS: BF (X, Y), Y представляет собой список, содержащий элементы дерева X, так как встречается в ширину, первый визит. БФ ([], []). бф ([пустота | Rest], Y): - бф (Rest, Y). бф ([дерево (Integer, вправо, влево) | Rest], [Integer | Y]): - добавить (Rest, [Влево, вправо], узлы), бф (Nodes, Y). Я даже не знаю, что все переменные означает ... Любили бы некоторую помощь.
newbie
1

голосов
0

ответ
70

Просмотры

Как вывести в массивах C ++ байт в бинарные файлы без утечки памяти?

У меня есть задание написать двоичный файл в C ++, то есть сообщение с некоторыми научными параметрами в нем, в виде метаданных (заголовок) и данные наук (тела). После некоторых поиска, проб и ошибок, как сделать это, я решил использовать структуру массивов символов и зЬгср в них шестнадцатеричное числе представление бит. Дело в том, что, в то время как это работало в некоторых компьютерах, где я тестировал его, на других он дал мне ошибки, связанные с памятью. Последний является: * Ошибка в `./WriteBinary.exe ': поврежден размер по сравнению с prev_size: 0x0000000001189e50 * Приведенный ниже код будет только показать мою неопытность с управлением памятью. Вопрос в том, где я сделал неправильно в работе с памятью, и что такое правильный способ написания отдельных значений байт для бинарных файлов? // уборка структура ТМ // Preheader структура структура Preheader {символьные prehead1 [4]; символ prehead2 [2]; символ prehead3 [2]; символ prehead4 [3]; символ prehead5 [1]; символ prehead6 [5]; символ prehead7 [1]; }; // структура заголовка структура заголовка {символ head1 [4]; обугливается head2 [1]; обугливается head3 [1]; }; // структура кузова структура кузова {символьные BD1 [61]; }; INT основных (INT ARGC, символ * ARGV []) {INT FileNum = atoi (ARGV [3]); // переменная, чтобы сохранить номер файла srand (время (NULL) + FileNum); // дать новый случайный набор в настоящее время + смещение с номером файла для различных генерации массива символов * имя_файл = ARGV [1]; // второй аргумент [1] основной функции является имя файла передается в Баш скрипт оболочки // настройки файла, чтобы перенаправить вывод в ofstream OUTPUTFILE; outputFile.open (имя_файл, ИОС :: двоичный); // установить количество пакетов телеметрии size_t num_tm = atoi (ARGV [2]); // количество пакетов телеметрии должны быть записаны в том же файле // структуры экземпляры вектор HK_PreHead (num_tm); вектор HK_Head (num_tm); вектор HK_Bd (num_tm); // Цикл по телеметрии пакетов для (INT I = 0; я
a.kazakov
1

голосов
1

ответ
45

Просмотры

Преобразование массива 1D в матрице

У меня есть один одномерный массив со следующими значениями: 10010011 Я хотел бы, чтобы преобразовать этот одномерный массив в 2X4 матрицу с следующим порядком: 1001 0011 Код, который я попытался ниже: #include #include #define rows_Matrix 2 #define cols_Matrix 4 недействительный print2DArray (без знака ** обр, Int м, Int д); INT основных () {INT = 0; беззнаковое Массив [8] = {1, 0, 0, 1, 0, 0, 1, 1}; // Выделение памяти. без знака ** Матрица = (беззнаковое **) таНос (SizeOf (без знака *) * rows_Matrix); // Строки для (INT I = 0; я <rows_Matrix; я ++) // Ряды {матрица [я] = (без знака *) таНос (SizeOf (без знака) * cols_Matrix); // Столбцы} делать {для (INT I = 0; я <rows_Matrix; я ++) {для (Int J = 0, J <cols_Matrix; j ++) {Матрица [I] [J] = Array [к]; }} K ++; } В то время как (к <8); print2DArray (Матрица, 2, 4); возвращать 0; } Недействительными print2DArray (без знака ** обр, Int м, Int Q) {для (INT I = 0; г <м; я ++) // Ряды {для (Int J = 0, J <д; J ++) {// Колонки Е ( "% d \ т", обр [я] [J]); } Е ( "\ п"); } Е ( "\ п"); } Но ответ, что я получаю: 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. }} K ++; } В то время как (к <8); print2DArray (Матрица, 2, 4); возвращать 0; } Недействительными print2DArray (без знака ** обр, Int м, Int Q) {для (INT I = 0; г <м; я ++) // Ряды {для (Int J = 0, J <д; J ++) {// Колонки Е ( "% d \ т", обр [я] [J]); } Е ( "\ п"); } Е ( "\ п"); } Но ответ, что я получаю: 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. }} K ++; } В то время как (к <8); print2DArray (Матрица, 2, 4); возвращать 0; } Недействительными print2DArray (без знака ** обр, Int м, Int Q) {для (INT I = 0; г <м; я ++) // Ряды {для (Int J = 0, J <д; J ++) {// Колонки Е ( "% d \ т", обр [я] [J]); } Е ( "\ п"); } Е ( "\ п"); } Но ответ, что я получаю: 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. INT д) {для (INT I = 0; г <м; я ++) // Ряды {для (Int J = 0, J <д; J ++) // Столбцы {Е ( "% d \ т", обр [я ] [J]); } Е ( "\ п"); } Е ( "\ п"); } Но ответ, что я получаю: 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. INT д) {для (INT I = 0; г <м; я ++) // Ряды {для (Int J = 0, J <д; J ++) // Столбцы {Е ( "% d \ т", обр [я ] [J]); } Е ( "\ п"); } Е ( "\ п"); } Но ответ, что я получаю: 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива. 1 1 1 1 1 1 1 1 Я хотел бы знать, почему значения значения не быть назначены правильно. Кажется, как я это делаю, я просто скопировать первый элемент одномерного массива.
Anthony
1

голосов
0

ответ
83

Просмотры

Как восстановить изображение PNG из VARBINARY (макс) SQL Server в PHP

Я застрял в преобразовании VARBINARY (MAX) с SQL Server на изображение PNG в PHP. Я следовал учебник как это: база 64
Agung
1

голосов
1

ответ
40

Просмотры

Многократное чтение файла, где количество строк не равно

У меня есть два файла данные. Данные двойного типа (например, 90,0, 25,63). Файл1 состоит из 3 столбцов и строк, а нескольких Файл2 состоят из 4 столбцов и нескольких рядов. Я читал данные из обоих файлов отдельно в одной программе Java и данные COLUMN1 из File1 сопоставляется с данными COLUMN1 из Файл2, то появится сообщение, что данные соответствуют еще данные не совпадают. Количество строк в первом файле данных не совпадает по числу строк второго файла данных. Если есть совпадение найдено в строке с номером 4, то данные до 4-го ряда будет писать так, как она есть, и в четвертой строке она запишет Eсть матч. Пример: Файл1: 2,0 0,6258 0,239 1,852 0,5289 0,782 3,0 2,358 5,0 1,2586 2,3658 0,1258 6,0 0,235 0,8547 3,5870 Файл2: 5,0 0,8974 1,2358 0,2581 0,3258 0,6528 7,0 0,6987 Число строк в File2 ниже, чем в File1. Все данные 1-го столбца и для File1 и Файл2 в порядке возрастания. Я хочу написать 2.0 и 3.0, как это. Тогда есть совпадение с Файл2 так будет писать «Матч найден», то 6,0 из File1 написано, как это. Затем снова поиск, если совпадение найдено, то снова записать «Матч найден». Код: импорт java.io.File; импорт java.util.Scanner; общественный класс F1 {государственного статический силы основной (String арг []) бросает исключение {Сканер Y = новый сканер (новый файл ( "C: \\ file1.txt")); Сканер Х = новый сканер (новый файл ( "C: \\ file.txt")); двойной а = 0,0, Ь = 0,0, C, D = 0,0, е = 0,0, F, G, H; в то время как (X.hasNext () && Y.hasNext ()) {а = X.nextDouble (); System.out.println (а); // первая строка file1,2nd строки file1 .... Так, наконец, некоторые строки в конце файла будет отбрасывать б = X.nextDouble (); с = X.nextDouble (); д = Y.nextDouble (); System.out.println (е); // первая строка file2. Каждая строка печати как количество строки меньше File1. е = Y.nextDouble (); е = Y.nextDouble (); г = Y.nextDouble (); если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? с = X.nextDouble (); д = Y.nextDouble (); System.out.println (е); // первая строка file2. Каждая строка печати как количество строки меньше File1. е = Y.nextDouble (); е = Y.nextDouble (); г = Y.nextDouble (); если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? с = X.nextDouble (); д = Y.nextDouble (); System.out.println (е); // первая строка file2. Каждая строка печати как количество строки меньше File1. е = Y.nextDouble (); е = Y.nextDouble (); г = Y.nextDouble (); если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? // первая строка file2. Каждая строка печати как количество строки меньше File1. е = Y.nextDouble (); е = Y.nextDouble (); г = Y.nextDouble (); если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? // первая строка file2. Каждая строка печати как количество строки меньше File1. е = Y.nextDouble (); е = Y.nextDouble (); г = Y.nextDouble (); если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? если (а == г) {System.out.println ( "Они соответствуют"); } Еще {System.out.println ( "Not Matched"); }}}} Нужно ли мне осуществить любую процедуру поиска? Как Binarsearch? В Java существует процедура Arrays.binarySearch (массив, ключ). Таким образом, чтобы реализовать, что мне нужно, чтобы сохранить переменную в массиве. Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура? Затем каждая ячейка этого массива будет сравниваться с д. Верно ли это процедура?
Encipher
1

голосов
0

ответ
93

Просмотры

Предзаказ обходы всех возможных бинарных деревьев Учитывая упорядоченную Traversal

Я смотрел на вопросы о бинарных деревьев, и я наткнулся на следующее: С учетом обхода в заказ бинарного дерева, печати обходов Предзаказ всех возможных бинарных деревьев, удовлетворяющих заданной упорядоченную обхода. Для например, если обход в-заказа: {4, 5, 7} Возможные деревья: 4 4 5 7 7 \ \ / \ / / 5 7 4 7 4 5 \ / \ / 7 5 5 4 Таким образом, в обходах предварительного заказа являются: 4 5 7 4 7 5 5 4 7 7 4 5 7 5 4 решением, которое я придумал: траверс данного упорядоченного списка. После каждой итерации, выберите элемент из списка и сделать его корень нашего дерева. Все элементы, предшествующие текущий будут часть левого поддерева и все элементы преуспевающих это сформирует правое поддерево. Мы можем рекурсивно сделать то же самое для левого и правого поддеревьев. Например, в приведенном выше примере, я начинаю, выбрав 4 как корень моего дерева. Теперь, так как нет никаких элементов, предшествующих 4, я не могу иметь левое поддерево. Я смотрю на остальных элементах. Они образуют правое поддерево. Я выбираю 5 является корнем этого поддерева. Для этого, я только остается один выбор: построить правое поддерево 5 из 7. Это дает первое дерево примера. Теперь, я держу 4 как корень, и вместо того, чтобы выбрать 5, я выбираю 7 как корень правого поддерева 4. Это приводит меня ко второму дереву приведенного выше примера. Это очень хорошо. Проблема возникает с кодом. Я провел довольно когда-то на перевод выше решение кода. Но я не был полностью успешным. Это то, что я пробовал в C ++:
user162417
1

голосов
1

ответ
202

Просмотры

Linux «строка» команда с -EL опции в бинарный файл и как заменить результирующие строки

Я хотел бы заменить некоторые строки в двоичном файл, а именно file.bin, ниже моя проблема: У меня есть двоичный файл, я могу искать строку «ABC» в file.bin используя Linux строку командной строки file.bin | Grep а Я могу заменить строку «ABC» в «А» с помощью СЕПГА -i «s / ABC / XYZ / г file.bin Все строк„а“были заменены. Тем не менее, я затем искать строку «ABC», используя командные строки с -EL опции (которые означают, кодирующие 16-битный Little Endian): строки -EL file.bin | Grep а Я до сих пор найти много строки «ABC» Как я заменить эту строку «ABC» в «А»? Я хочу все «ABC» строки заменяются строка «А» в результате строк -EL Спасибо за помощь
Don Anto
1

голосов
0

ответ
18

Просмотры

BinaryFormatter Serialize исключает datatable.defaultview.sort свойство во serilization

У меня есть класс с несколькими свойствами, некоторый типа недвижимости в классе DataTable Я использую BinaryFormatter создать клон копию класса, он отлично работает, но datatable.defaultview.sort, который был установлен с некоторым значением не справляется как в клонировали объект. Это пример кода государственной статической силы Main (string [] арг) {TestCloneDatatable (); } Частной статической силы TestCloneDatatable () {DataTable datatatable = новый DataTable (); datatatable.Columns.Add ( "ID", TypeOf (INT)); datatatable.Columns.Add ( "addressLine1", TypeOf (строка)); для (INT I = 0; я <10; я ++) {datatatable.Rows.Add (I, String.Concat ( "тест", я)); } Datatatable.DefaultView.Sort = "addressLine1 АСК"; Тест тест = новый тест (); тестовое задание. ID = 1; test.Name = "мое имя"; test.Addresss = datatatable; Тест testClone = test.Clone (); Строка сортировки = testClone.Addresss.DefaultView.Sort; // здесь пусто, мне нужно «addressLine1 ASC» должен быть там} [SerializableAttribute] Класс Test общественного {общественного ИНТ ID {получить; задавать; } Публичная строка Name {получить; задавать; } Общественного DataTable Addresss {получить; задавать; } Тест Клон общественности () {Тест результат = DeepCopy (это); возвращать результат; } Защищен Т DeepCopy (Т элемент) {BinaryFormatter форматировщик = новый BinaryFormatter (); MemoryStream поток = новый System.IO.MemoryStream (); formatter.Serialize (поток, пункт); stream.Seek (0, SeekOrigin.Begin); Т результат = (Т) formatter.Deserialize (поток); stream.Close (); возвращать результат; }}

Просмотр дополнительных вопросов