Bir n sayı dizisi verildiğinde, bu dizinin alt kümelerini (0 tabanlı dizinlenmiş) belirli bir aralıktaki indeksinden jth dizinine başlayarak nasıl hesaplayabiliriz. Ben bitmasking kullanmayı denedim ama bu aralıktan dolayı bunu nasıl çözeceğimi anlayamadım. Örneğin, a dizisi a = [2 6 9 1 7] ve verilen aralık 1 ila 3 ise, cevap = [6], [9], [1], [6 9 olacaktır. ], [6 1], [9 1], [6 9 1]Belirli bir aralıktaki bir dizinin alt kümelerini hesaplamak?
İşte dizinin tüm alt kümelerini hesaplayan işlevdir ve bu aralığın nasıl kısıtlanacağından emin değilim.
private static void findSubsets(int array[])
{
int numOfSubsets = 1 << array.length;
for(int i = 0; i < numOfSubsets; i++)
{
int pos = array.length - 1;
int bitmask = i;
System.out.print("{");
while(bitmask > 0)
{
if((bitmask & 1) == 1)
System.out.print(array[pos]+",");
bitmask >>= 1;
pos--;
}
System.out.print("}");
}
}
neden sadece bir alt dizi oluşturmuyorsunuz? –
Bu küçük verimsiz değil mi? @willywonka_dailyblah – ashwani
veya alternatif olarak bir ofset kullanın ve diziyi –