首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作这种模式查找算法?

如何制作这种模式查找算法?
EN

Stack Overflow用户
提问于 2012-04-04 06:53:58
回答 2查看 549关注 0票数 2

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

代码语言:javascript
复制
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

规则:

precedent.

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

所以问题是:

找出尊重三条规则的最佳模式。从矩阵中获得的示例如下:

rows.

  • 1(4)

  • For
  1. 选择了一个数字: 0(2) // "()“中的”()“表示value..position从1开始到10的位置,位置2和4作为一个模式必须支持矩阵的其余部分的规则1和规则2。

所以我们在第三排进一步,我们检查第二位置:1。我们走第四排,我们检查第四位置:0。似乎尊重规则。在第二和第四位置上有相反的数字,所以我们继续:第5行,第2位置:等等,但是你会看到在第7排第2位置:1和第8排第4位置:1;所以位置2-4的模式不好。

我怎样才能根据这些规则制定算法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-04 08:30:23

也许这会有帮助(由对你的问题的评论激励)。这是一个C++的答案。这个答案假设0始终是您选择的数字,但是您可以轻松地编辑它以允许1成为第一位。

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2012-04-04 11:21:57

我将根据第一项(F)的索引和第二项(S)的索引来定义模式。我还假设索引以0开头(而不是你的例子中的1)。F和S都可以取0到9之间的值,解很简单。有一个双嵌套循环,从0到9运行F和S,在第三个内部循环中,只需验证当前F和S是否形成模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10006247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档