Új hozzászólás Aktív témák

  • axioma

    veterán

    válasz DopeBob #83 üzenetére

    (tegnapihoz nem volt ertekben 1-nel nagyobb kikotes, a 0 is eleme a medencenek, szerintem...)
    Hat en siman rekurziot irtam (ez esetben valodit, mert velheto volt hogy nem lesz ezres melyseg, persze lehet ciklussa atirni is amikor olyan a feladat). Egy tetszoleges koordinata "medenceje" 0, ha az 9-es, ha viszont mas, akkor rekurziv hivassal (ha nem szelso az adott iranybol akkor meghivom arra a szomszedra) kapott mereteket hozzadom -- de kozben amikor beleszamolom egybol 9-esitem is oket, mert egy hivasbol is eljut tobbszor ugyanarra a pontra. Igy ha minden koordinatat lekerdezek, akkor is csak a diszjunkt medencek lesznek nemnulla me'rettel.
    Mivel mar reg kirakhato a kod (sajat csatornaikon is), ime egy pelda a megoldasra:
    def get_size(arr,i,j):
    if arr[i][j]==9:
           return 0
    res=1
    arr[i][j]=9
    if i>0:
           res+=get_size(arr,i-1,j)
        if i+1<len(arr):
           res+=get_size(arr,i+1,j)
       if j>0:
           res+=get_size(arr,i,j-1)
       if j+1<len(arr[0]):
           res+=get_size(arr,i,j+1)
        return res

    arr=[list(map(int,list(s))) for s in input().split('\n')]
    areas=[]
    for i in range(len(arr)):
        for j in range(len(arr[0])):
            act=get_size(arr,i,j)
            if act>0:
                areas.append(act)
    areas.sort()
    print(areas[-3]*areas[-2]*areas[-1])  

    A mai feladat tipikus veremmel (stack) megoldando feladat, de ha a masodik fele ment, akkor azt valoszinuleg ugy is csinaltad, akkor viszont nem kene az elejenek se neheznek lennie.

    [ Szerkesztve ]

Új hozzászólás Aktív témák