folder Tahribat.com Forumları
linefolder Java
linefolder Java Nested Loop Alternatif



Java Nested Loop Alternatif

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    Millet selamlar çözdüğüm bir soruda ( x,y koordinatları veriliyor kendi aralarında aynı diyagonal doğrultuda olanları sayan kod )iç içe  for-while loop kullandım. Test caselerde 200 bin koordinat verince time exceeding yiyorum. O(n2) den kurtulmak için aklınıza gelen başka çözüm var mı? O nested yerine  başka bir yapı var mı alternatif, beynim durdu?

    package codeforces;
    import java.util.*;
    public class WSandBishopsB {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner key = new Scanner(System.in);
    		int bishnum = key.nextInt();
    		int [] arr = new int[400000];
    		int sayac=0;
    		for(int i=0;i<bishnum*2;i++){
    			int a = key.nextInt();
    			int b = key.nextInt();
    			arr[i]=a;
    			arr[i+1]=b;
    			i++;
    		}
    		
    			for(int m=0;m<bishnum*2-1;m++){
    				int x=arr[m];
    				int y=arr[m+1];
    				int d=m;
    				System.out.println(m);
    				while(d<bishnum*2-2){
    					if(Math.abs(arr[d+2]-x)==Math.abs(arr[d+3]-y)){
    						sayac++;
    					}
    					d+=2;
    				}
    				m++;
    			}
    			System.out.println(sayac);
    		key.close();
    	}
    
    }
    
    input
    5
    1 1
    1 5
    3 3
    5 1
    5 5
    output
    6
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    Bu arada sitedeki bir problem açığa çıktı. Kod içerisinde tag varsa kodu bozuyor. bknz. line:2

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    benzer bir problem var hocam burada 

    http://stackoverflow.com/questions/34446707/why-is-my-program-exceeding-the-time-limit

    alltaki cevap muhtemelen senin de çözümündür..

    ayrıca sitedeki örnekte stringbuilgder kullanılmış, sen de ekrana yazdırmak yerine dönen değeri string builder e at, işlem bitince yazdırırsın.. Diğer türlü sürekli ekrana yazdırmak doğru değil.

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek
    unbalanced bunu yazdı

    benzer bir problem var hocam burada 

    http://stackoverflow.com/questions/34446707/why-is-my-program-exceeding-the-time-limit

    alltaki cevap muhtemelen senin de çözümündür..

    ayrıca sitedeki örnekte stringbuilgder kullanılmış, sen de ekrana yazdırmak yerine dönen değeri string builder e at, işlem bitince yazdırırsın.. Diğer türlü sürekli ekrana yazdırmak doğru değil.

     

    hacı ben string example+="xyz"; tarzında bir kullanımdan doğan bi verimsizlikte stringbuilder kullanılıyor diye biliyordum. Onu da düzelteyim bari. O topicte yanıtı veren eleman time complexity den bahsedip geçmiş ben daha çok soruya özel bir çözüm arıyorum. 

    Benim çözümümde bütün koordinatlar tek dizide sırayla x1, y1, x2, y2 diye tutuluyor sonra birinciden başlayıp tarıyor diğerlerini içteki loop o taramayı yapıyor dıştaki diziyi ilerletiyor. doğal olarak O(n2) büyük inputta koşulları sağlamıyor. 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek
    edit: iki defa atmış
    whopper tarafından 01/Şub/16 14:36 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    S2kucuk
    S2kucuk's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Haziran/2015
    Erkek

    O(n^2) den kurtulmanın tek yolu brute-force yapmaktan vazgeçmek. Onun için de matematiksel bir formül bulmak gerekir. Şuan istediğin şey mevcut kodun hızlandırılması mı complexity düşürülmesi mi ona göre cevap vericem.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Soruyu yazabilir misin hocam? Koddan bakıp çıkamadım işin içinden.

    Ayrıca soru hakkında hiçbir şey bilmeden yapacağım yorum da şu olur: neden int [] arr = new int[400000]; ?


    Sen hiç kaval çaldın mı?
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek
    JPriest bunu yazdı

    Soruyu yazabilir misin hocam? Koddan bakıp çıkamadım işin içinden.

    Ayrıca soru hakkında hiçbir şey bilmeden yapacağım yorum da şu olur: neden int [] arr = new int[400000]; ?

    http://codeforces.com/contest/621/problem/B

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek
    S2buyuk bunu yazdı

    O(n^2) den kurtulmanın tek yolu brute-force yapmaktan vazgeçmek. Onun için de matematiksel bir formül bulmak gerekir. Şuan istediğin şey mevcut kodun hızlandırılması mı complexity düşürülmesi mi ona göre cevap vericem.

    Ben soruya baktığımda brute force ile yapılamayacağını nasıl anlamadım da bu kodu yazdım ona şaşırıyorum.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    S2kucuk
    S2kucuk's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Haziran/2015
    Erkek

     

    Edit: Ben olayı komple yanlış anlamışım. 

    S2kucuk tarafından 01/Şub/16 19:26 tarihinde düzenlenmiştir
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Çok güzel soruymuş.

    Tek boyutlu dizi hareket kabiliyetini azaltır. İki boyutlu dizi ile gitsen, sadece i değil j seçeneğin de olur, karşılaştırma yaparken falan rahat edersin.

    Ayrıca String concatenation ile StringBuilder.append() karşılaştırmasında (içeriğe göre değişir denmesine rağmen) genel olarak pek de bir fark yokmuş.

    http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java

    Ama StringBuffer vs StringBuilder denirse, StringBuilder daha performanslı.


    Sen hiç kaval çaldın mı?
Toplam Hit: 3880 Toplam Mesaj: 16
java nested loop effiecency time complexity