folder Tahribat.com Forumları
linefolder C - C++
linefolder Beynimi 2 Gündür Yorduğum C++ Sorusu [Yardım]



Beynimi 2 Gündür Yorduğum C++ Sorusu [Yardım]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek

    Hocalar merhaba. 

    Aklıma bi soru geldi ve onu yapmak istedim c++ dilini kullanarak.

    Öncelikle belirteyim sadece for ve if kullanarak yapmak istiyorum. Yani Vector dizi goto kalıbı filan yok. Sadece saf algoritma kullanarak yapmak itiyorum. Asıl oyunu bozan kısımda bu zaten

    Soru :

    Bi insan varmış. İnsanında değişken bir sayıda kölesi var. Bu insan köleleri çember oluşturacak şekilde diziyor ve en baştaki kölesine bir kılıç veriyor.

    Kılıcı alan köle yanındaki köleyi öldürüyor ve sonraki köleye kılıcı veriyor.

    Sorunun basit hali :

    10 köle var diyelim

     1    2yi öldürdü kılıcı 3e verdi

    3    4ü öldürdü kılıcı 5e verdi

    5    6yi öldürdü kılıcı 7ye verdi

    7    8 i öldürdü kılıcı 9a verdi

    9    10u öldürdü kılıcı 1e verdi

    1    3ü öldürdü kılıcı 5e verdi

    5    7yi öldürdü kılıcı 9a verdi

    9    1i öldürdü kılıcı 5e verdi

    5    9u öldürdü Kılıç 5te Kaldı

     

    Bunun formülünü bulmaya çalıştım beceremedim. 

    Yanlız şöyle bi ince nokta buldum. Kullanıcının girdiği sayı tek ise farklı çift ise farklı sonuç çıkıyor. (Doğal olarak öyle zaten ama bi başka anlamda farklı) 

     

    Direkt olarak kodu yazsanızda olur. Şöyle böyle yapsan çıkar desenizde olur :D Uykularım kaçıyor kaç gündür :D

    GodKlaus tarafından 03/Nis/16 16:32 tarihinde düzenlenmiştir

    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    hayatta kalan köleleri mi bulmaya çalışıyosun anlamadım ?

    çok basit geldi sorun yanlış anladım sanki


    black implies white, self implies other, life implies death.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    nurulmac11 bunu yazdı

    hayatta kalan köleleri mi bulmaya çalışıyosun anlamadım ?

    çok basit geldi sorun yanlış anladım sanki

    Aynen hocam. Adamın 10 kölesi var.

    Raund 1 sonunda hayatta kalanlar

    raund 2 sonunda hayatta kalanlar

    .

    .

    .

    En son hayatta kalan köle.

     

    Vectör yada dizi kullanmak istemiyorum, vektör kullanarak yaptım ama sadece sınırsız sayıda for ve if kullanarak yapmak istiyourm

     


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek
    GodKlaus bunu yazdı
    nurulmac11 bunu yazdı

    hayatta kalan köleleri mi bulmaya çalışıyosun anlamadım ?

    çok basit geldi sorun yanlış anladım sanki

    Aynen hocam. Adamın 10 kölesi var.

    Raund 1 sonunda hayatta kalanlar

    raund 2 sonunda hayatta kalanlar

    .

    .

    .

    En son hayatta kalan köle.

     

    Vectör yada dizi kullanmak istemiyorum, vektör kullanarak yaptım ama sadece sınırsız sayıda for ve if kullanarak yapmak istiyourm

     

    hacı diziler olmadan her mahkum için bir değişken yaratıp yapman lazım, çünkü mahkumların ölü yada canlı olduğunu tutacak bişey gerek

    şöyle bişey olur o zaman

    int kilic_kimde = 1 // kilic kacinci mahkumda. baslarken ilk mahkuma verelim
    
    int mahkumsayisi;
    
    int mahkum1 = 1, mahkum2 = 1, .... // kac mahkum varsa. eger 1 se canli, 0 sa olu olsunlar
    
    for(int i = 0;i < mahkumsayisi;i += 2){
    
    	i+1'inci mahkumu oldur
    
    	kilic_kimde = i;
    
    }c

     

     


    black implies white, self implies other, life implies death.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    Hocam vektor dedigin sey zaten teorikte bir oncesini bir sonrasini bilen bir veri yapisi. Her koleyi bir oncesine ve sonrasina bir sekilde baglaman gerek.

    Soyle yapabilirsin. Bir tane kole arrayin olur. (Kole numaralari gibi dusun)

    Bir tane yasiyor yasamiyor Arrayin olur (Kole arrayi ile ayni boyutta, kole yasarken degeri 1 yasamiyorsa 0)

    En son bir de kilicin oldugu kolenin indexini tutan bir degiskenin olur. Bu sekilde rahat rahat cozersin problemi.

    Simdi baktim array de kullanmayayim demissin de, array yerine upuzun bir sayi dizisi de kurabilirsin. Ama olayi saf algoritma ile falan cozmus olmuyorsu  yani. Bildigin amelelik bu :D

     


    There are 10 types of people in the world. Those who knows binary and those who dont...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    NmC bunu yazdı

    Hocam vektor dedigin sey zaten teorikte bir oncesini bir sonrasini bilen bir veri yapisi. Her koleyi bir oncesine ve sonrasina bir sekilde baglaman gerek.

    Soyle yapabilirsin. Bir tane kole arrayin olur. (Kole numaralari gibi dusun)

    Bir tane yasiyor yasamiyor Arrayin olur (Kole arrayi ile ayni boyutta, kole yasarken degeri 1 yasamiyorsa 0)

    En son bir de kilicin oldugu kolenin indexini tutan bir degiskenin olur. Bu sekilde rahat rahat cozersin problemi.

    Simdi baktim array de kullanmayayim demissin de, array yerine upuzun bir sayi dizisi de kurabilirsin. Ama olayi saf algoritma ile falan cozmus olmuyorsu  yani. Bildigin amelelik bu :D

     

    hocam dizi ve vektör kullanmak istemiyorum :)

    Elimde bir değişken olacak. bu değişken her raund belli bir katsayı ile çarpılacak. Buradaki katsayıyı bulamıyorum.

    en aşağı 5 6 sayfa formül yazdım. onlarca değer tutuyor ancak bir değer tutmuyor xD

     

     


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek
    GodKlaus bunu yazdı
    NmC bunu yazdı

    Hocam vektor dedigin sey zaten teorikte bir oncesini bir sonrasini bilen bir veri yapisi. Her koleyi bir oncesine ve sonrasina bir sekilde baglaman gerek.

    Soyle yapabilirsin. Bir tane kole arrayin olur. (Kole numaralari gibi dusun)

    Bir tane yasiyor yasamiyor Arrayin olur (Kole arrayi ile ayni boyutta, kole yasarken degeri 1 yasamiyorsa 0)

    En son bir de kilicin oldugu kolenin indexini tutan bir degiskenin olur. Bu sekilde rahat rahat cozersin problemi.

    Simdi baktim array de kullanmayayim demissin de, array yerine upuzun bir sayi dizisi de kurabilirsin. Ama olayi saf algoritma ile falan cozmus olmuyorsu  yani. Bildigin amelelik bu :D

     

    hocam dizi ve vektör kullanmak istemiyorum :)

    Elimde bir değişken olacak. bu değişken her raund belli bir katsayı ile çarpılacak. Buradaki katsayıyı bulamıyorum.

    en aşağı 5 6 sayfa formül yazdım. onlarca değer tutuyor ancak bir değer tutmuyor xD

     

     

    ne yaparsan yap kolelerin yasayıp yaşamadığını tutacak bir yere ihtiyacın var, bunun için arraye ihtiyacın olacak. yada benzer bi yapıyı kendin oluşturacaksın


    black implies white, self implies other, life implies death.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    Kim sordu bilmiyorum ama josephus probleminden yola çıkmış belli. Zamanında javayla birkaç yoldan yazmıştım, şu an işim başımdan aşkın şu kaynakları incelersen çözebilirsin: 

    http://mathworld.wolfram.com/JosephusProblem.html

    https://murattezgider.wordpress.com/tag/javada-flavius-josephus-probleminin-cozumu/

    http://www.cplusplus.com/forum/beginner/113281/

    bir ve ikinciden problemi anla diğer linkte tartışmışlar ordan esinlen ve çöz.

     

    Ayrıca algoritma mevzularına ilgin varsa codeforces sitesine gel derim geliştirirsin kendini.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek
    GodKlaus bunu yazdı
    NmC bunu yazdı

    Hocam vektor dedigin sey zaten teorikte bir oncesini bir sonrasini bilen bir veri yapisi. Her koleyi bir oncesine ve sonrasina bir sekilde baglaman gerek.

    Soyle yapabilirsin. Bir tane kole arrayin olur. (Kole numaralari gibi dusun)

    Bir tane yasiyor yasamiyor Arrayin olur (Kole arrayi ile ayni boyutta, kole yasarken degeri 1 yasamiyorsa 0)

    En son bir de kilicin oldugu kolenin indexini tutan bir degiskenin olur. Bu sekilde rahat rahat cozersin problemi.

    Simdi baktim array de kullanmayayim demissin de, array yerine upuzun bir sayi dizisi de kurabilirsin. Ama olayi saf algoritma ile falan cozmus olmuyorsu  yani. Bildigin amelelik bu :D

     

    hocam dizi ve vektör kullanmak istemiyorum :)

    Elimde bir değişken olacak. bu değişken her raund belli bir katsayı ile çarpılacak. Buradaki katsayıyı bulamıyorum.

    en aşağı 5 6 sayfa formül yazdım. onlarca değer tutuyor ancak bir değer tutmuyor xD

     

     

    Jeton simdi dustu :) Formulize etmeye calisiyorsun olayi. Aksam musait olursam kalemi kagidi alip bir bakayim :)


    There are 10 types of people in the world. Those who knows binary and those who dont...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    Konu ile ilgili Prof. Dr. Vasif Vagifoğlı NABIYEV in algoritmalar kitabında geçen kısımlarının fotoğrafını çektim
    https://www.dropbox.com/sh/3hpakaji0y4tsfm/AAAXP0HiQ0xrm2A0pmOP4lOVa?dl=0

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Bekirella
    Bekirella's avatar
    Kayıt Tarihi: 30/Temmuz/2015
    Erkek
    #include<iostream>
    using namespace std;
    class Slave {
    	public:
    		int value;
    		Slave* next;
    		Slave* killNext();
    };
    
    Slave* Slave::killNext(){
    	Slave* a = next;
    	next = next->next;
    	return a;
    }
    
    int main(){
    	int number;
    	cout << "How many slave ? \n";
    	cin >> number;
    	
    	Slave *head = new Slave();
    	head->value = 1;
    	head->next = head;
    	Slave *cur = head;
    	for(int i = 2 ; i<=number;i++){
    		Slave *newS = new Slave();
    		newS->value = i;
    		newS->next = cur->next;
    		cur->next = newS;
    		cur = newS;
    	}
    	cur = head;
    	for(int i = 1;i<number;i++){
    		Slave *k = cur->killNext();
    		cout << cur->value << " " << k->value << " 'u oldurdu ve kilici " << cur->next->value << " ya verdi \n";
    		cur = cur->next; 
    	}
    	
    	
    	
    	
    	
    	return 0;
    }

     

    ilgimi çekti yazmaya çalıştım algoritmik olarak elbet daha verimli bişeyler yazılır ama buyrun belki işinize yarar hocam


    Bilgi bilmek için var
Toplam Hit: 6648 Toplam Mesaj: 26
c++ soru hardcore