向量向量的按位运算 其他元数据

问题描述

问题描述

您好,我正在重新编写一个解决nonograms的旧程序。 作为解决方案的一部分,我(针对某些行)生成了一种将数字适合所有可能方式的数组。

我想创建一段代码,它将合并所有可能的位置。

含义,例如,伪代码

[[0,1],[1,[0,1,1]]

OR - [1,1]
AND - [0,1]

这两个操作的结果将使我确切地知道固定值在哪里。 [?,?,1]

假设

  • 在C ++中需要该解决方案。

  • 展示位置存储在vector<vector<bool>>中。

  • 所有内部vector的大小都相同。

  • 完成哪一个按位运算都没关系,只是可以将其应用于所有向量。

可能的解决方

#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<vector<bool>> options =
            {{false,false,true},{true,{false,true,true}};

    vector<bool> merge_and,merge_or;
    bool flag;
    int i,j;

    for (i = 0; i < options.size(); i++) {
        for (j = 0; j < options[0].size(); j++) cout << options[i][j];
        cout << endl;
    }
    cout << endl;

    for (i = 0; i < options[0].size(); i++) {
        flag = options[0][i];
        for (j = 1; j < options.size(); j++) {
            flag = flag & options[j][i];
        }
        merge_and.push_back(flag);
    }

    for (i = 0; i < options[0].size(); i++) {
        flag = options[0][i];
        for (j = 1; j < options.size(); j++) {
            flag = flag | options[j][i];
        }
        merge_or.push_back(flag);
    }

    cout << "AND ";
    for (const auto &i : merge_and) cout << i;
    cout << endl;

    cout << "OR ";
    for (const auto &i : merge_or) cout << i;
    cout << endl;
}

输出

001
101
011

AND 001
OR 001

其他元数据

如果有人对完整的实现感兴趣,请在完成并完整记录后将其上传到我的GitHub account

预先感谢帮助者和评论员。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)