0

所以,我正在 Scilab 中开发一个解决二进制难题的程序。但是,我遇到了一个问题。谁能向我解释解决带有间隙的二进制序列背后的逻辑(如 [1 0 -1 0 -1 1 -1] 其中 -1 表示一个空单元格。我想要给定序列的所有可能解决方案。到目前为止我有:

function P = mogelijkeCombos(V)
for i=1:size(V,1)
    if(V(i) == -1)
        aantalleeg = aantalleeg +1
    end
end
for i=1:2^aantalleeg 
    //creating combos here
end
endfunction

抱歉,有些词在荷兰语中是 aantalleeg 的意思,我指的是空单元格的数量,我希望我给了你们足够的信息。我不需要编写任何代码,我只是想知道如何进行所有可能的演绎,因为我完全被 atm 卡住了。

顺便说一句,这是一项学校作业,但作业比这要大得多,而且只是一小部分,我需要一些想法

提前ty

4

1 回答 1

0

简短的回答

您可以通过扩展您的代码并创建所有可能的长度为“amountempty”的二进制字并在 V 的空单元格中逐位替换它们来创建组合。

分步说明

  • 查找所有空单元格位置
  • 计算您找到的职位数量(等于空单元格的数量)
  • 使用您的计数长度创建所有可能的二进制数
  • 对于您生成的每个二进制数,将位放在空单元格中
  • 打印出/存储填充位的可能序列

例子

查找所有空单元格位置

例如,您可以从 1 开始从左到右检查,如果单元格为空,则将该位置添加到您的位置列表中。

V = [1 0 -1 0 -1 1 -1] 
          ^    ^    ^
          |    |    | 
     1 2  3 4  5 6  7

// result
positions = [3 5 7]

计算您找到的职位数量

//result 
amountempty = 3;

创建长度为amountempty的所有可能的二进制数

dec2bin您可以使用SciLab 中的功能创建所有可能的数字或单词。可能的字数很容易确定,因为您知道一个长为空位的字可以表示多少单独的值。

// Create the binary word of amountEmpty bits long
binaryWord = dec2bin( i, amountEmpty );

生成的 binaryWord 将是一个字符串,您必须将其拆分为单独的位并将其转换为 numbers

对于您生成的每个 binaryWord

现在通过从原始 V 开始创建一个可能的解决方案,并使用来自 binaryWordPerBit 的位填充位置列表中该位置的每个空单元格

possibleSequence = V;

for j=1:amountEmpty
    possibleSequence( positions(j) ) = binaryWordPerBit(j);              
end

我希望你“成功遇见 je opdracht”

于 2013-05-13T07:19:07.713 回答