Lab 8  Solutions,  ESC101, 2004-2005 Semester-II


1.

import java.io.*;

class Permutation
{
    public static void PermutationHelper(int [] prefix, int []toPermute)
    {
        if(toPermute.length==0)
        {
            System.out.println();
            for(int i=0;i<prefix.length;i++)
                System.out.print(prefix[i]+ " ");
            return;
        }
        int cnt,i;
        int prefix1[]=new int[prefix.length + 1];
        int toPermute1[]=new int[toPermute.length - 1];
        for(i=0;i<prefix.length;i++)
            prefix1[i]=prefix[i];
        for(int j=0;j<toPermute.length;j++)
        {
            cnt=0;
            prefix1[i]=toPermute[j];
            for(int k=0;k<toPermute.length;k++)
            {
                if(k==j)
                    continue;
                toPermute1[cnt++]=toPermute[k];
            }
            PermutationHelper(prefix1,toPermute1);
        }
               
    }
   
    public static void main(String args[]) throws IOException
    {
        InputStreamReader in=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(in);
        System.out.println("Enter the Number");
        String s=br.readLine();
        int no=Integer.parseInt(s);
        int prefix[]=new int[0];
        int toPermute[]=new int[no];
        for(int i=0;i<no;i++)
            toPermute[i]=i+1;
       
        PermutationHelper(prefix,toPermute);
    }   
   
}




2.

import java.io.*;

public class SetOperation
{
    static int output[];
    public static void setOperation(int set1[],int set2[],String arg)
    {
        int temp[]=new int[set1.length+set2.length];
        boolean flag;
       
        if(arg.compareTo("Union")==0)
        {
            int cnt=0;
            for(int i=0;i<set2.length;i++)
            {
                flag=true;
                for(int j=0;j<set1.length;j++)
                {   
                    if(set2[i]==set1[j])
                    {
                        flag=false;
                        break;
                    }
                }
                if(flag)
                {
                    temp[cnt++]=set2[i];
                }
            }
            for(int i=0;i<set1.length;i++)
                temp[cnt++]=set1[i];
           
            output=new int[cnt];
           
            for(int i=0;i<cnt;i++)
                output[i]=temp[i];
           
        }
       
        else if(arg.compareTo("Intersection")==0)
        {
            int cnt=0;           
            for(int i=0;i < set1.length;i++)
            {
                flag=false;
                for(int j=0;j<set2.length;j++)
                {
                    if(set1[i]==set2[j])
                    {   
                        flag=true;
                        break;
                    }
                }
                if(flag)
                {
                    temp[cnt++]=set1[i];
                }
            }

            output=new int[cnt];
           
            for(int i=0;i<cnt;i++)
                output[i]=temp[i];

        }
               
        else if(arg.compareTo("Difference")==0)
        {
            int cnt=0;
            for(int i=0;i<set1.length;i++)
            {
                flag=true;
                for(int j=0;j<set2.length;j++)
                {
                    if(set1[i]==set2[j])
                    {
                        flag=false;
                        break;
                    }
                }
                if(flag)
                {   
                    temp[cnt++]=set1[i];
                }
            }
           
            output=new int[cnt];
           
            for(int i=0;i<cnt;i++)
                output[i]=temp[i];                           
       
        }
       
        else
            System.out.println("Undefied Operation");
    }
   
    public static void main(String args[] ) throws IOException
    {
        InputStreamReader in=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(in);
        System.out.println("Enter Set1 size");
        String s=br.readLine();
        int s1=Integer.parseInt(s);
        int set1[]=new int[s1];
        System.out.println("Enter Uniqe Elements");
        for(int i=0;i<s1;i++)
        {
            s=br.readLine();
            set1[i]=Integer.parseInt(s);
        }
       
        System.out.println("Enter Set2 size");
        s=br.readLine();
        int s2=Integer.parseInt(s);
        int set2[]=new int[s2];
        System.out.println("Enter Uniqe Elements ");
        for(int i=0;i<s2;i++)
        {
            s=br.readLine();
            set2[i]=Integer.parseInt(s);
        }
       
        System.out.println("Enter Operation to be Performed Union/Intersection/Difference");
        s=br.readLine();
       
        setOperation(set1,set2,s);
       
        for(int i=0;i<output.length;i++)
            System.out.print(output[i] + " ");
        System.out.println();
       
               
    }
   
}