[MD-sorular] matematik ve algoritma
Burak Yücesoy
burakyucesoy at gmail.com
13 Kas 2008 Per 20:55:08 EET
recursive bir algoritma kullanmalısın. Örnek üzerinde anlatmak gerekirse;
Bir grupta en fazla elemanı bulunan bütünün eleman sayısı gruba adını versin.
Ör:
** * * (2 grubu)
*** *** (3 grubu)
p(6) yı şu şekilde gruplar ayırıyorum
6 grupları:
******
5 grupları:
***** *
4 grupları:
**** **
**** * *
3 grupları:
*** ***
*** ** *
*** * * *
2 grupları:
** ** **
** ** * *
** * * *
1 grupları:
* * * * * *
fonsiyonda p(0) ı ve p(1) i 1 olarak tanımladıyorum. Daha sonra
p(6) nın 6 grupları için: p(6-6) {kalan 0 elemanı parçalıyorum}
p(6) nın 5 grupları için: p(6-5) {kalan 1 elemanı parçalıyorum}
p(6) nın 4 grupları için: p(6-4) {kalan 2 elemanı parçalıyorum}
p(n) nın r grupları için: p(n-r) {kalan (n-r) elemanı parçalıyorum}
...
şeklinde. Burada unutmamamız gereken r nin o gruptaki max elemanlı
bütünün adı olduğu. Yani n-r nin r den büyük olduğu durumlarda r den
büyük elemanlı gruplar üretilebilinir. Buda hesabın fazla çıkmasına
sebep olacaktır. Mesela;
p(6) nın 2 li grupları için p(4) ü hesaplamak yanlıştır. Böyle
durumlarda o 4 ü de 2 ve 2 den küçük parçalara ayırarak işlem yapmak
gerekir.
MD-sorular mesaj listesiyle ilgili
daha fazla bilgi