gpt4 book ai didi

algorithm - 如何制作这种模式发现算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:38 25 4
gpt4 key购买 nike

我有一个矩阵,我需要在这个矩阵中找到一个模式。矩阵是:

1 0 0 1 1 1 0 0 0 1
0 0 0 1 1 0 1 0 0 1
0 1 1 1 0 0 0 1 0 1
1 0 1 0 0 1 1 0 1 0
1 1 1 0 0 0 1 1 0 1
0 1 0 0 1 1 0 1 0 1
1 1 1 0 0 0 1 0 0 1
1 0 0 1 0 1 1 1 0 1

规则:

  1. 我们从每一行中选择一个数字。
  2. 下一个从第二行选择的数字必须与前面的数字相反。
  3. 规则 1 和 2 选择的数字的位置必须是精确的模式。

所以问题是:

找到符合 3 条规则的最佳模式。所示矩阵的示例:

  1. Choosed a number: 0(2)//“()”中的内容表示值的位置..position 从 1 到 10 在行上开始。
  2. 1(4)
  3. 要使位置 2 和 4 成为模式,矩阵的其余部分必须支持规则 1 和 2。

所以我们在第 3 行更进一步,检查第 2 个位置:1。我们走到第 4 行,我们检查第 4 个位置:0。似乎很尊重规则。 2nd 和 4th position 的数字相反,所以我们继续:5th row, 2nd position:, 依此类推,但是你会看到在 7th row 2nd position:1 和 8th row 4th position:1;所以位置2-4的格局不好。

我如何根据这些规则制定算法?

最佳答案

也许这会有所帮助(受到对您问题的评论的启发)。这是一种 C++ 类型的答案。此答案假定 0 始终是您选择的数字,但您可以轻松编辑它以允许 1 成为第一个。

int firstPos, secondPos;

for(int i = 0; i < 10; ++i)
if(matrix[0][i] == 0)
firstPos = i;

for(int i = 0; i < 10; ++i)
if(matrix[0][i] == 1)
secondPos= i;

bool success = true;

for(int i = 0; i < 10/2; ++i)
if(matrix[2*i][firstPos] == matrix[2*i][secondPos])
success == false;

if(success)
cout << "success" << endl;
else
cout << "failure" << endl;

关于algorithm - 如何制作这种模式发现算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com