Sunday, 6 April 2014

Write a program to print all the binary strings of length n and does not contain a specific string

C Language:

#include<stdio.h>
main()
{
char in[30];
int i,n,cnt=0;
printf("enter n value\n");
scanf("%d",&n);
printf("enter the pattern that you don't want in side the binary string\n");
scanf("%s",&in);
printf("all the patterns without %s are \n",in);
printall(in,n,&cnt);
printf("count = %d\n",cnt);
}
void printall(char in[], int n, int *cnt)
{
char out[30]="";
aux_printall(in,out,0,n,cnt);

}
void aux_printall(char in[], char out[], int d, int n, int *cnt)
{
if(d>strlen(in))
{
out[d]='\0';
if(strstr(out,in)!=NULL)
return;
}
if(d==n) // print output
{
out[n]='\0';
printf("%s\n",out);
(*cnt)++;
return;
}

out[d]='0';
aux_printall(in,out,d+1,n,cnt);
out[d]='1';
aux_printall(in,out,d+1,n,cnt);
}

Java:

import java.util.Scanner;
class Binary
{
       public static void main(String [] args)
    {
        Scanner input = new Scanner(System.in);
        int[] cnt = new int[1];
        cnt[0]=0;
        System.out.print("Enter n:\n");
        int n = input.nextInt();
        System.out.print("Enter string that you don't want inside the binery string \n");
        String  in = input.next();
        System.out.print("The binary strings of length "+n+" and without haveing "+in+" are\n");
        printall(in, n,cnt);
        System.out.println("the count is "+cnt[0]);
     
    }

    public static  void printall(String in, int n, int [] cnt)
    {
           String out="";
            int d=0;
            auxprintall(in,out,d,n,cnt);
    } 
    public static void auxprintall(String in, String out, int d, int n, int [] cnt)
    {
        if(out.contains(in))
        return;
        if(d==n)
        {
        System.out.println(out);
        cnt[0]++;
        return;
        }
        
        auxprintall(in,out+"0",d+1,n,cnt);
        auxprintall(in,out+"1",d+1,n,cnt);
    
    }
}

No comments:

Post a Comment