Kod:
Dim listesutun()
ReDim listesutun(sutun * sutun)
Dim b As Integer
b = Sheets("sayfa1").Cells(satir, sutun - 1)
For i = 1 To Sheets("sayfa3").UsedRange.Rows.Count
listesatir(i) = Sheets("sayfa3").Cells(i, 1)
listesutun(i) = Sheets("sayfa3").Cells(i, 2)
Next i
While b > 0
For j = 1 To (satir - 1)
i = Sheets("sayfa3").Cells(1, 3)
Set xrange2 = Sheets("sayfa4").Rows(i)
If Sheets("sayfa4").Cells(i, j) > 0 And Sheets("sayfa4").Cells(i, j) = Application.WorksheetFunction.Min(xrange2) Then
If (i = listesatir(i) And j = listesutun(i)) Or (i = listesutun(i) And j = listesatir(i)) Then
a = a + 1
Sheets("sayfa5").Cells(a, 1) = i
Sheets("sayfa5").Cells(a, 2) = j
tpu = tpu + Sheets("sayfa4").Cells(i, j)
Sheets("sayfa4").Cells(i, j).ClearContents
b = b - 1
Else
a = a + 1
Sheets("sayfa5").Cells(a, 1) = i
Sheets("sayfa5").Cells(a, 2) = j
tpu = tpu + Sheets("sayfa4").Cells(i, j)
Sheets("sayfa4").Cells(i, j).ClearContents
Sheets("sayfa4").Cells(j, i).ClearContents
b = b - 2
End If
Sheets("sayfa3").Cells(1, 3) = j
End If
Next j
Wend
Arkadaşlar kolay gelsin yukarda görünen kod , bir arama algoritması , en kısa yol problemlerini bulmak için kullanılan çinli postası probleminin uyarlanmış bir versiyonudur kodumda bir hata yok fakat takıldığım bir yer var , çpp de eşleştirme yaparken eşleştirilen hücreyi ve onun simetriğini siliyorum ki tekrardan probleme dahil olmasın ama bazı hücrelerin 2 şer kez çözümün içinde yer alması gerekiyor onları daha öncesinde belirleyip bir sayfaya yazdırıyorum daha sonrasında da bunu bir listeye atıyorum
şimdi burdaki temel sorun şu listeye atarken i ve j listesi şeklinde oluşturuyorum dikkat ederseniz yani satır ve sütun olarak 2 ayrı liste var
bu listeyi arama algoritmasında ayrı bi değişkenle aramıyorum sadece yine i ile arıyorum 2 sinde de i ile aramamın sebebi 2 listenin de i. elemanları bir eşleşmeyi temsil ediyor ve bu eşleşme denk geldiğinde çalışsın istiyorum ama gel gelelim benim listem bazı durumlarda i den kısa oluyor ve bu durumda if şartları false olarak gösteriyor ve yanlış çalışıyor
benim bu durumdan kurtulmam için ne yapmam lazım nasıl bir liste tutabilirim
yine benzer bir liste tutup listesatir ve listesutun un elamanlarını denk getirmem mümkün mü
eğer içinde var mı diye bakarsam doğru olmaz çünkü özel durum söz konusu x,y denk geldiğinde ya da y,x denk geldiğinde çalışmalı
istediğim
