Mayın Tarlası için. Bildiğiniz gibi, mayın tarlasında hangi alanların açılmasının güvenli olduğunu belirlemek için iki yol vardır, ya da hangi alanların mayınlandığını belirlemek ve onu işaretlemeniz gerekir. belirlemek için ilk yolu önemsiz olduğunu ve böyle bir şey var:Algoritmik çözüm ben mayın tarama gemisi çözücüsü yapmaya çalışıyorum
if (mayın sayısı etrafında X - X etrafında keşfedilen madenlerin mevcut sayısı) X etrafında Tüm açılmamış alanlar
mayınlı sonra X etrafında açılmamış alanların = sayıif (X etrafında mayın sayısı == X etrafında keşfedilen madenlerin mevcut sayısı) daha sonra X etrafında Tüm açılmamış alanlar
mayınlı dEĞİLDİR Ama soru şudur: biz herhangi mayınlı bulamadığında durum hakkında neler veya güvenli alan ve 1'den fazla alana bakmamız gerekiyor mu? Örneğin
http://img541.imageshack.us/img541/4339/10299095.png
bu durum. Önceki yöntemi kullanarak hiçbir şey belirleyemiyoruz. Bu yüzden bu durumlarda algoritma konusunda yardıma ihtiyacım var.
Bunu yapmak için A * algoritması kullanmak zorunda. Bu yüzden algoritmada bir sonraki adım için tüm olası güvenli durumlara ihtiyacım var. Mümkün olan tüm güvenli durumları bulduğumda onları en kısa yollara ekleyeceğim ve sezgisel fonksiyona bağlı olarak yolların listesini sıralayacağım ve açılması gereken bir sonraki alanı seçeceğim.
Sen algoritması yazma önlemek ve bilgisayar kendiliğinden öğrenelim, ama sana herhangi bir daha fazla söyleyemem olabilir ..:/ – BlackBear
Sana sağlamak örneği görüntüyü anlamıyorum. En soldaki "2", soldaki ikinci satırdaki alanların çıkarıldığını, ancak ikinci "2" nin sadece birinin olduğunu öne sürer. Bu hangi oyun bağlamında ortaya çıkar? Oyunun bilgilerinin çelişkili olabileceğini mi düşünüyorsun? – pjmorse
Ancak, algoritmanızda bu görüntüde güvenli bir alan bulursunuz. İki tarafından çevrili 2 atın; iki etrafındaki mayın sayısı, ikisi arasında bulunan mevcut mayın sayısıdır. Yani üstündeki boş alanı ortaya çıkarabilirsin. Yoksa, henüz işaretlenmemiş bir bayrakla bu alana sahip olsaydınız, bu iki bayrağı işaretlemeyi nasıl bilirdiniz? – Kevin