C++矩阵组合

发布于 2024-11-16 15:35:40 字数 218 浏览 2 评论 0原文

首先感谢您的阅读。我正在尝试制作一个“noob”程序,并且我想使用注册码。 为了完成我的加密算法,我需要生成仅包含从 0 到 9 的数字的所有 4x4 矩阵,如下例所示:

4 4 6 8

5 2 4 3

8 5 2 9

2 7 2 6

我知道有大量这样的矩阵组合,但它不会阻止我。我尝试自己使用“for”来做到这一点,但我无法弄清楚。

Firstly thanks for reading.I'm trying to make a "noob" program and i wanted to use a registration code.
For completing my encryption algorythm i need to generate all 4x4 matrices containing only numbers from 0 to 9 like in the following example:

4 4 6 8

5 2 4 3

8 5 2 9

2 7 2 6

I know there is a huge number of these combinations but it wont stop me.I tried myself to do it using "for" but i can't figure it out.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹊巢 2024-11-23 15:35:40

我会将 4x4 数字矩阵存储为 char[16],将前四个字符解释为第一行,将接下来的四个字符解释为第二行,等等。您可以通过递归轻松生成所有可能的值,使用 for 在每个级别上循环。

void print_all_possible_matrices(char *matrix, int level) {
    if(level == 16) {
        print_matrix(matrix);
    }
    for(int i = 0; i < 10; ++i) {
        matrix[level] = i;
        print_all_possible_matrices(matrix, level + 1);
    }
}

您可以按以下方式使用它:

int main() {
    char matrix[16];
    print_all_possible_matrices(matrix, 0);
}

但这将花费很长的时间才能完成。

I would store the 4x4 digit matrix as char[16], interpreting the first four chars as the first row, the next four chars as the second row, etc. You can easily generate all possible values by recursion, with a for loop on each level.

void print_all_possible_matrices(char *matrix, int level) {
    if(level == 16) {
        print_matrix(matrix);
    }
    for(int i = 0; i < 10; ++i) {
        matrix[level] = i;
        print_all_possible_matrices(matrix, level + 1);
    }
}

You would use this in the following way:

int main() {
    char matrix[16];
    print_all_possible_matrices(matrix, 0);
}

But this will take really loooong time to complete.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文