суббота, 22 октября 2016 г.

Булеан

второй вариант:
язык - C++

#include "stdio.h"
#include "string.h"

void main()
{
    char s[32 + 1];

    scanf("%s", &s);
    int n = strlen(s);

    for(int i = 0; i < 2 << (n - 1); i++)
    {
        printf("\n%i: {", i);
        for(int j = 0; j < n; j++)
        {
            int mask = 1 << j;

            if(mask & i)
            {
                printf("%c", s[j]);

                int commaMask = 0xFFFFFFFF << (j + 1);
                if((commaMask & i) != 0)
                    printf(", ");
            }
        }
        printf("}");
    }
}

Пример работы:

abcd
0: {}
1: {a}
2: {b}
3: {a, b}
4: {c}
5: {a, c}
6: {b, c}
7: {a, b, c}
8: {d}
9: {a, d}
10: {b, d}
11: {a, b, d}
12: {c, d}
13: {a, c, d}
14: {b, c, d}
15: {a, b, c, d}

Комментариев нет:

Отправить комментарий