i.p:
ar[]={3,4,2,9,6,8,1}
o/p:
3 4 9
2 6 8
1 2 4 9
1 6 9
1 3 4 8
(print in sorted order)
(all sum become 16)
using subarray & sort
import java.util.*;
public class NewClass6 {
void print(int d[],int c)
{
for(int i=0;i<c;i++)
System.out.print(d[i]+" ");
System.out.println();
}
void sort(int d[],int c)
{
for(int i=0;i<c;i++)
{
for(int j=i+1;j<c;j++)
{
if(d[i]>d[j])
{
d[i]=d[i]+d[j];
d[j]=d[i]-d[j];
d[i]=d[i]-d[j];
}
}
}
}
void subarray(int ar[],int avg)
{
int k=0;
for(int i=1;i<(1<<ar.length);i++)
{ int d[]=new int[ar.length],min=-1;
int itr=i,index=0,c=0,sum=0;
while(itr>0)
{ if(itr%2!=0)
{
sum+=ar[index];
d[c++]=ar[index];
}
itr=itr>>1;
index++;
}
if(ar.length%2==0){ //even length
if(sum==avg && c==ar.length/2 ){
sort(d,c);
print(d,c);}
}else //for odd length
{
if(sum==avg && c==ar.length/2 || sum==avg && c==(ar.length+1)/2){
sort(d,c);
print(d,c);}
}
}
}
public static void main(String args[])
{
int ar[]={3,4,2,9,6,8,1},sum=0;
NewClass6 ob=new NewClass6();
for(int i=0;i<ar.length;i++)
sum+=ar[i];
sum=sum/2;
ob.subarray(ar,sum);
}
}
ar[]={3,4,2,9,6,8,1}
o/p:
3 4 9
2 6 8
1 2 4 9
1 6 9
1 3 4 8
(print in sorted order)
(all sum become 16)
using subarray & sort
import java.util.*;
public class NewClass6 {
void print(int d[],int c)
{
for(int i=0;i<c;i++)
System.out.print(d[i]+" ");
System.out.println();
}
void sort(int d[],int c)
{
for(int i=0;i<c;i++)
{
for(int j=i+1;j<c;j++)
{
if(d[i]>d[j])
{
d[i]=d[i]+d[j];
d[j]=d[i]-d[j];
d[i]=d[i]-d[j];
}
}
}
}
void subarray(int ar[],int avg)
{
int k=0;
for(int i=1;i<(1<<ar.length);i++)
{ int d[]=new int[ar.length],min=-1;
int itr=i,index=0,c=0,sum=0;
while(itr>0)
{ if(itr%2!=0)
{
sum+=ar[index];
d[c++]=ar[index];
}
itr=itr>>1;
index++;
}
if(ar.length%2==0){ //even length
if(sum==avg && c==ar.length/2 ){
sort(d,c);
print(d,c);}
}else //for odd length
{
if(sum==avg && c==ar.length/2 || sum==avg && c==(ar.length+1)/2){
sort(d,c);
print(d,c);}
}
}
}
public static void main(String args[])
{
int ar[]={3,4,2,9,6,8,1},sum=0;
NewClass6 ob=new NewClass6();
for(int i=0;i<ar.length;i++)
sum+=ar[i];
sum=sum/2;
ob.subarray(ar,sum);
}
}
No comments:
Post a Comment