Algoritma: keyfi bir yol ile tarif iki sektör şeklini belirleyin, ardından bir tane dolgu

oy
2

NOT: Bu mantık sorunları, vb seven herkes için zorlu bir sorundur

Izgara üzerinde her boşluk yüksekliği H ve genişlik W dikdörtgen bir iki boyutlu bir ızgara düşünün bir değere sahiptir, ya da 0 1ya da 2. Başlangıçta, ızgara üzerinde her alan a, 0ilk olarak dört kenarların her biri boyunca boşluklar hariç 2.

Daha sonra, bitişik (yatay veya dikey) ızgara boşlukların rasgele bir yol düşünün. Yolu başlar 2ve farklı bir günü biter 2. Yol boyunca her alanı olduğu 1.

Yolu, iki sektörlere içine ızgara böler 0boşluklar. Belirsiz bir dayanmaktadır bir amacı yoktur 0alanı. Nesneyi İÇERMEZ sektör ile tamamen doldurulmalıdır 2.

Olmak zorundadır boşluk belirleyen bir algoritma tanımlama 2gelen 0bir değerler dizisi (liste) göz önüne alındığında, ( 0, 1ya da 2) soldan sağa doğru, daha sonra ızgara değerlerine karşılık gelen üstten alta doğru giden ve bu. Diğer bir deyişle, dizideki elemanın indeksi 0, (başlangıçta bir ızgarada sol üst boşluk değerini içerir 2). Elemanın indeksi 1 benzeri ikinci üst sol sütunda ve ızgara alanı değerini içerir. Göstergesi H noktasındaki elemanı benzeri üst üste ancak soldan ikinci ve ızgara alanı değerini içerir.

Algoritma bitirir ve boş sektör ile tamamen doldurulduktan sonra 2s, AYNI algoritma yine aynı işlemi yapmak için yeterli olmalıdır. (Ve) ikinci kez yolu hala bir çekilir 2farklı için 2bir boşluk boyunca, 0fakat, çünkü kılavuz küçük olan 2diğer çevrilidir s 2yolu olduğu s (yol ile değmeyeceği boşluklara boyunca 0).

Ben çok çok fazla, benim için bu anlamaya yapabiliyor kişiye teşekkür ederim. Bu, belirli bir programlama dilinde olmak zorunda değildir; aslında, sözde kod ya da sadece İngilizce yeterlidir. Tekrar teşekkürler! Herhangi bir sorunuz varsa, sadece bir yorum bırakın ve ben belirtilen gerekenleri belirtmek gerekir.

Oluştur 15/05/2010 saat 22:07
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
3

Temel bir Bana kalırsa taşkın dolgu algoritması işi olacaktır:

  • İlk için dizinizi tarayın 0bulmak ve sonra doldurma, oradan bir sel dolguyu başlatmak 0başka sayı ile bölgeyi diyelim 3- Bu "sektörler" birini etiketleyecektir.
  • Bu işlem tamamlandıktan sonra, bir tekrar tarama 0ve sel bir doldurulması, oradan doldurmak 4bu sefer.
  • Eğer nesne ya da değil bulundu olsun doldurur hem sırasında, kontrol edilebilir; Eğer sırasında bulduğu sayısını takip doldurmak hangisi.
  • Sel ile geri, yine o bölgeyi doldurmak - Her iki dolgular yapıldıktan sonra numaralı bölge içinde nesne vardı kontrol 0bu kez.
  • Sel ile diğer numaralandırılmış bölgeyi doldurmak 2ve bitirdiniz.

Bu sürece tam iki bulunmasından ötürü, herhangi ızgara yapılandırma için çalışacağız 0birbirinden kopuk olan sektörler; bu nedenle aynı algoritma yeniden uygulanması zaman herhangi bir sayıda iyi.

Düzenleme: Küçük düzenlemeler, sana bir sel dolgu ya da iki kaydetmek için -

  • İlk sel dolgu daki nesneyi bulamazsanız, diğer sektör bunu olduğunu varsayalım, bu nedenle sadece mevcut numarayı tekrar doldurmak 2ve (zaten beri yalnız diğer sektörünü terk 0dolgulu).
  • Eğer Alternatif olarak, do ilk sel dolgu nesneyi bulmak, doğrudan diğer sektör doldurabilir 2ilk sektörünü doldurmak sonra yeniden ve 0.
Cevap 15/05/2010 saat 22:23
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more