#include #include #include int** napravi_matricu_podskupova(int n) { int** podskupovi; podskupovi = (int**) malloc((int)pow(2, n) * sizeof(int*)); for (int k = 0; k < (int) pow(2, n); k++) { podskupovi[k] = (int*) malloc(n * sizeof(int)); } int* sabirak_jedinica = (int*) malloc (n * sizeof(int)); for (int i = 0; i < n; i++) sabirak_jedinica[i] = 0; sabirak_jedinica[n-1] = 1; int* tekuci_podskup = (int*) malloc (n * sizeof(int)); for (int i = 0; i < n; i++) tekuci_podskup[i] = 0; int prenos, zbir; for (int j = 1; j < (int)pow(2, n); j++) { for (int k = 0; k < n; k++) podskupovi[j][k] = tekuci_podskup[k]; prenos = 0; for (int k = n-1; k >= 0; k--) { zbir = prenos + tekuci_podskup[k] + sabirak_jedinica[k]; tekuci_podskup[k] = zbir % 2; prenos = zbir / 2; } } return podskupovi; } void prikazi_podskupove(int n) { int* sabirak_jedinica = (int*) malloc (n * sizeof(int)); for (int i = 0; i < n; i++) sabirak_jedinica[i] = 0; sabirak_jedinica[n-1] = 1; int* tekuci_podskup = (int*) malloc (n * sizeof(int)); for (int i = 0; i < n; i++) tekuci_podskup[i] = 0; int prenos, zbir; for (int j = 1; j < (int)pow(2, n); j++) { for (int k = 0; k < n; k++) printf("%d ", tekuci_podskup[k]); printf("\n"); prenos = 0; for (int k = n-1; k >= 0; k--) { zbir = prenos + tekuci_podskup[k] + sabirak_jedinica[k]; tekuci_podskup[k] = zbir % 2; prenos = zbir / 2; } } free(tekuci_podskup); } int main() { int n = 3; int** mat = napravi_matricu_podskupova(n); for (int i = 0; i<(int)pow(2, n); i++) { for (int j = 0; j