Programlama Rehberi

arslan sordu
c veya c++(algoritma ve veri yapilari) dilini bilen varsa cevaplayabilir mi?

soru:

bankamatikte
iki 500 lu, bir 200 lu, uc 100 lu, iki 50 li, bir 20 li ve dort 10 lu, bankamotlu paramiz duruyor,
bu bankadan 260 lira cekmek isteniyor,,
1-kac farkli sekilde cekilebilir.
ve bu farkli cekilme varyantlarinin hepsini ekranda gosteriniz..
ornegin ;
200+50+10 yada 100+100+50+10

bilen varsa yukarida ki soruyu c dilinde yada c ++ dilinde aciklayici bir sekilde
 yazarsa cok sevinirim tesekurler arkadaslar,...


Yazılan cevap: 2
Eklenme tarihi: 2010-11-16
Okunma sayısı: 640
Kategori: Algoritmalar ve Veri Yapıları

Cevaplar(2)

arkadaslar bizahmet bu soruya bi el atabilirmisiniz.?
Yazan: arslan / Ort. puan: 0 /
Cevabı değerlendir:

profosyonel olduğumu söylemiyorum ben de acemiyim fakat elimden geldiğince bir sonuç bulmaya çalıştım.

büyük ihtimalle benim brute force ile yaptığım bu çözümü bunca for döngüsü kullanmak yerine recursive bir fonksiyon ile hem çok daha hızlı hem çok daha verimli bir şekilde yapabilirsiniz. ama başlangıç için iş görür:

#include<stdio.h>

int main(){
 
 //260 lira olması gerekli
 //eldeki paralar 2*500 + 1*200 + 3*100 + 2*50 + 1*20 + 4*10
 int a,b,c,d,e,f;
 //sırasıyla kullanacağımız banknotların sayısı(a tane 500,b tane 200,c tane 100...)
 //500 lira 260dan büyük olduğundan a'yı hiç hesaba katmayız.
 for(b=0;b*200<=260 && b<=1;b++)
  for(c=0;(c*100+b*200)<=260 && c<=3;c++)
   for(d=0;(b*200+c*100+d*50)<=260 && d<=2;d++)
    for(e=0;(b*200+c*100+d*50+e*20)<=260 && e<=1;e++)
     for(f=0;(b*200+c*100+d*50+e*20+f*10)<=260 && f<=4;f++)
      if(b*200+c*100+d*50+e*20+f*10==260)
       printf("%d 200lik, %d 100lik, %d 50lik, %d 20lik, %d 10lik\n",b,c,d,e,f);
 return 0;
}


Yazan: irmak_xp / Ort. puan: 0 /
Cevabı değerlendir:


2004-2009 © Programlama Rehberi, tüm hakları saklıdır.