Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- bool toBinary(int a, char * res, int len, int posToBePresent, unsigned numOnes) {
- int b, i, j=0;
- bool isPresent=false;
- unsigned numOnesInNum=0;
- for(i=0;i<len;i++){
- b=(a>>i)&1;
- res[j++] = (char)(b+48);
- if(i==posToBePresent && b+48=='1'){
- isPresent=true;
- }
- if(b+48=='1'){
- numOnesInNum++;
- }
- }
- res[j] = '\0';
- return isPresent && numOnesInNum==numOnes;
- }
- int printPermutation(int *arr, char *mask, unsigned size){
- char *p = mask;
- for(unsigned i=0; i<size; i++){
- if(*p=='1'){
- cout<<arr[i];
- }
- p++;
- }
- cout<<endl;
- return 0;
- }
- int generatePermutations(int *arr, unsigned size, unsigned sizeOfPermutation, unsigned posToBePresent){
- int power = pow(2, size);
- for(unsigned i=0; i<power; i++){
- char *mask = new char[33];
- if(toBinary(i, mask, size, posToBePresent, sizeOfPermutation)){
- cout<<mask<<endl;
- //printPermutation(arr, mask, sizeOfPermutation);
- }
- mask = NULL;
- delete[] mask;
- }
- return 0;
- }
- int main() {
- //power
- unsigned k;
- cin>>k;
- int *array = new int[k];
- for(unsigned i=0; i<k; i++){
- cin>>array[i];
- }
- //power of subsets
- unsigned n;
- cin>>n;
- //position of one
- unsigned p;
- cin>>p;
- generatePermutations(array, k, n, p-1);
- if(array!=NULL){
- delete[] array;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement