生成所有具有重复的排列。...在C中是非递归的

乔尔·梅伦德斯(Joel Melendez)

所以我想知道如何编写一个非递归函数来打印给定N和r的所有排列,其中r^N给出了排列的总数。

Example: N = 3, r = 2, total permutations = 8

output:
000
001
010
011
100
101
110
111

这是我尝试过的方法,但是当然仅适用于一种情况:

void perm_iter(int N, int nr_vals){

    int pos = N-1;
    int i,j,k;
    int P_array[N];
    for(i=0;i<N;i++){
        P_array[i] = 0;
    }
    int val_array[nr_vals];
    for(i=0;i<nr_vals;i++){
        val_array[i] = i;
    }

    do{
        for(i=0;i<N;i++){
            for(j=0;j<nr_vals;j++){
                P_array[pos-1] = val_array[j];
                for(k=0;k<nr_vals;k++){
                    P_array[pos] = val_array[k];
                    for(i=0;i<N;i++){
                        printf("%d",P_array[i]);
                    }
                    printf("\n");
                }
            }
            pos--;
        }
    }while(pos > 0);
}
rcgldr

这是具有可变基数的里程表功能,不是真正的排列。

#include <stdio.h>
#include <stdlib.h>

void show(int *a, int n)
{
int i;
    for(i = 0; i < n; i++)
        printf("%1d", a[i]);
    printf("\n");
}

void gen_all_numbers(int r, int n)
{
int i;
int *a;
    if(r < 2 || n < 1)          /* parameter check */
        return;
    r -= 1;                     /* r = max digit value */
    a = malloc(n * sizeof(int));
    for(i = 0; i < n; i++)      /* start with all zeroes */
        a[i] = 0;
    show(a, n);
    while(1){
        i = n - 1;
        while(a[i] < r){        /* increment last digit */
            a[i]++;
            show(a,n);
        }
        /* find next digit to increment */
        while(i >= 0 && a[i] == r)
            i--;
        if(i < 0)break;         /* return if done */
        a[i]++;
        while(++i < n)          /* zero following digits */
            a[i] = 0;
        show(a,n);
    }
    free(a);
}

int main()
{
    gen_all_numbers(2,4);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生成R中矩阵的所有排列

来自分类Dev

从 C# 中的给定字母生成所有可能的排列

来自分类Dev

C ++如何生成函数重载的所有排列?

来自分类Dev

如何获取Java中具有重复项的所有组合(递归)?

来自分类Dev

使用递归查找Python中列表的所有排列

来自分类Dev

使用递归查找Python中列表的所有排列

来自分类Dev

递归遍历数组的所有排列

来自分类Dev

递归列表构建:所有长度的排列

来自分类Dev

python使用递归的所有可能的排列

来自分类Dev

C ++中具有输出限制的排列

来自分类Dev

如何从字符串中获取具有所需长度的所有排列?

来自分类Dev

通过最小换位数生成所有排列 C -> C#

来自分类Dev

生成M个仓中N个球的所有排列

来自分类Dev

生成awxh矩阵中n个条目的所有排列

来自分类Dev

在 Python 中,如何按顺序生成一串 0 和 1 的所有排列?

来自分类Dev

如何在 PHP 中的 (y) 行上生成 (x) 字串的所有可能的行排列?

来自分类Dev

生成数组的所有排列而没有重复结果

来自分类Dev

所有排列,并找到最少的c ++

来自分类Dev

将对象保留在具有最高值的数组中,但删除所有具有重复值的对象

来自分类Dev

SQL选择一列中具有重复值的所有行

来自分类Dev

删除数据框(R)所有列中具有重复值的行

来自分类Dev

删除R中具有重复值的行的所有副本

来自分类Dev

如何删除2列中具有重复值的所有行,但保留最后插入的行?

来自分类Dev

返回所有列,不包括在一列中具有重复ID的行

来自分类Dev

从R中的重复序列中选择具有最大编号的所有行

来自分类Dev

合并R中具有除一个重复值之外的所有值的行

来自分类Dev

删除R中具有重复值的行的所有副本

来自分类Dev

csv删除一列中具有重复值的所有行

来自分类Dev

在具有不同行号的所有列中查找重复项

Related 相关文章

  1. 1

    生成R中矩阵的所有排列

  2. 2

    从 C# 中的给定字母生成所有可能的排列

  3. 3

    C ++如何生成函数重载的所有排列?

  4. 4

    如何获取Java中具有重复项的所有组合(递归)?

  5. 5

    使用递归查找Python中列表的所有排列

  6. 6

    使用递归查找Python中列表的所有排列

  7. 7

    递归遍历数组的所有排列

  8. 8

    递归列表构建:所有长度的排列

  9. 9

    python使用递归的所有可能的排列

  10. 10

    C ++中具有输出限制的排列

  11. 11

    如何从字符串中获取具有所需长度的所有排列?

  12. 12

    通过最小换位数生成所有排列 C -> C#

  13. 13

    生成M个仓中N个球的所有排列

  14. 14

    生成awxh矩阵中n个条目的所有排列

  15. 15

    在 Python 中,如何按顺序生成一串 0 和 1 的所有排列?

  16. 16

    如何在 PHP 中的 (y) 行上生成 (x) 字串的所有可能的行排列?

  17. 17

    生成数组的所有排列而没有重复结果

  18. 18

    所有排列,并找到最少的c ++

  19. 19

    将对象保留在具有最高值的数组中,但删除所有具有重复值的对象

  20. 20

    SQL选择一列中具有重复值的所有行

  21. 21

    删除数据框(R)所有列中具有重复值的行

  22. 22

    删除R中具有重复值的行的所有副本

  23. 23

    如何删除2列中具有重复值的所有行,但保留最后插入的行?

  24. 24

    返回所有列,不包括在一列中具有重复ID的行

  25. 25

    从R中的重复序列中选择具有最大编号的所有行

  26. 26

    合并R中具有除一个重复值之外的所有值的行

  27. 27

    删除R中具有重复值的行的所有副本

  28. 28

    csv删除一列中具有重复值的所有行

  29. 29

    在具有不同行号的所有列中查找重复项

热门标签

归档