Skip to main content
edited tags
Link
200_success
  • 145.7k
  • 22
  • 191
  • 481
added 81 characters in body
Source Link

I am making a permutation generator in c. Any ideas how I can make it faster?

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

int main(int argc, char *argv[]){
    char s[] = "abcdefghijklmnopqrstuvwxyz";
    int n = 8, c[n], i, l = strlen(s);
    char w[n];

    for(i = 0; i < n; i++){
        c[i] = 0;
        w[i] = '\0';
    }
    w[n] = '\0';
    while(c[0] < l){
        for(i = 0; i < n; i++){
            w[i] = *(s + c[i]);
        }
        printf("%s\n", w);
        c[n - 1] += 1;
        for(i = n - 1; i >= 0; i--){
            if(c[i] > l - 1 && i != 0){
                c[i] = 0;
                c[i - 1] += 1;
            }
        }
    }
}
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
    char s[] = "abcdefghijklmnopqrstuvwxyz";
    int n = 8, c[n], i, l = strlen(s);
    char w[n];

    for(i = 0; i < n; i++){
        c[i] = 0;
        w[i] = '\0';
    }
    w[n] = '\0';
    while(c[0] < l){
        for(i = 0; i < n; i++){
            w[i] = *(s + c[i]);
        }
        printf("%s\n", w);
        c[n - 1] += 1;
        for(i = n - 1; i >= 0; i--){
            if(c[i] > l - 1 && i != 0){
                c[i] = 0;
                c[i - 1] += 1;
            }
        }
    }
}

I am making a permutation generator in c. Any ideas how I can make it faster?

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

int main(int argc, char *argv[]){
    char s[] = "abcdefghijklmnopqrstuvwxyz";
    int n = 8, c[n], i, l = strlen(s);
    char w[n];

    for(i = 0; i < n; i++){
        c[i] = 0;
        w[i] = '\0';
    }
    w[n] = '\0';
    while(c[0] < l){
        for(i = 0; i < n; i++){
            w[i] = *(s + c[i]);
        }
        printf("%s\n", w);
        c[n - 1] += 1;
        for(i = n - 1; i >= 0; i--){
            if(c[i] > l - 1 && i != 0){
                c[i] = 0;
                c[i - 1] += 1;
            }
        }
    }
}
Source Link

C permutation generator

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

int main(int argc, char *argv[]){
    char s[] = "abcdefghijklmnopqrstuvwxyz";
    int n = 8, c[n], i, l = strlen(s);
    char w[n];

    for(i = 0; i < n; i++){
        c[i] = 0;
        w[i] = '\0';
    }
    w[n] = '\0';
    while(c[0] < l){
        for(i = 0; i < n; i++){
            w[i] = *(s + c[i]);
        }
        printf("%s\n", w);
        c[n - 1] += 1;
        for(i = n - 1; i >= 0; i--){
            if(c[i] > l - 1 && i != 0){
                c[i] = 0;
                c[i - 1] += 1;
            }
        }
    }
}