-3

cの文字列のすべての可能な値を実行するにはどうすればよいですか?これには、「&」、「%」、「/」などの文字が含まれます。たとえば、3文字の文字列は、「aaa」、「a $ f」、「acg」などです。

4

1 に答える 1

1

制限が事前にわかっていて、制限が低い場合は、ネストされたループを使用できます。たとえば、3 文字の文字列の場合、次のように 3 つのネストされたループを使用します。

char str[4] = "---";
for (str[0] = ' ' ; str[0] <= 'z' ; str[0]++) {
    for (str[1] = ' ' ; str[1] <= 'z' ; str[1]++) {
        for (str[2] = ' ' ; str[2] <= 'z' ; str[2]++) {
            printf("%s\n", str);
        }
    }
}

長さが事前にわからない場合は、再帰を使用する必要があります。アイデアは、再帰呼び出しの各レベルで 1 つのループを実装し、目的の深さで終了することです。

char *str = new malloc(n+1);
str[n] = '\0';
all_strings(str, n-1);

void all_strings(char *str, int n) {
    if (n == -1) {
        printf("%s\n", str);
    } else {
        for (str[n] = ' ' ; str[n] <= 'z' ; str[n]++) {
            all_strings(str, n-1);
        }
    }
}
于 2012-09-23T01:40:58.230 に答える