Arkadaslar javada abcd gibi n elemanli bir char arrayinin permutasyonlarini ve toplam permutasyon sayisini ozyinelemesiz olarak nasil kodlariz?

soruldu: 26 Tem '13, 08:59

mertkans's gravatar image

mertkans
1223
cevap kabul oranı: 0%

değiştirildi: 04 Ağu '13, 04:05

rahmanyazgan's gravatar image

rahmanyazgan ♦
4.4k83559

Asıl dert toplam sayıyı bulmaksa tüm permütasyonlardan kasıt 4 elemanlı permütasyonlar mı, yoksa 1, 2, 3, 4 uzunluklu tüm dizi olasılıklarının permütasyonları mı? Eğer 4 elemanlı ise n!/(n- r)! formülünü kullanarak örn. 4!/0! = 4! = 24 elde eden fonksiyon yazmanız yeterli. Bu ödevse kodu yapıştırıp takıldığınız yeri göstererek daha yararlı bir yardım alabilirsiniz.

(26 Tem '13, 23:10) nurettin nurettin's gravatar image

public class PermUtil<t> {

private T[] arr;
private int[] permSwappings;

public PermUtil(T[] arr) {
    this(arr, arr.length);
}

public PermUtil(T[] arr, int permSize) {
    this.arr = arr.clone();
    this.permSwappings = new int[permSize];
    for (int i = 0; i < permSwappings.length; i++) {
        permSwappings[i] = i;
    }
}

public T[] next() {
    if (arr == null) {
        return null;
    }

    T[] res = Arrays.copyOf(arr, permSwappings.length);
    //Prepare next
    int i = permSwappings.length - 1;
    while (i >= 0 && permSwappings[i] == arr.length - 1) {
        swap(i, permSwappings[i]); //Undo the swap represented by permSwappings[i]
        permSwappings[i] = i;
        i--;
    }

    if (i < 0) {
        arr = null;
    } else {
        int prev = permSwappings[i];
        swap(i, prev);
        int next = prev + 1;
        permSwappings[i] = next;
        swap(i, next);
    }

    return res;
}

private void swap(int i, int j) {
    T tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
}

}

permanent link

cevaplandı: 28 Ağu '13, 15:57

melihbaba's gravatar image

melihbaba
2015812
cevap kabul oranı: 25%

değiştirildi: 28 Ağu '13, 15:58

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×13
×1

Soruldu: 26 Tem '13, 08:59

Görüntüleme: 989 kez

Son güncelleme: 28 Ağu '13, 15:58

powered by BitNami OSQA