메뉴 건너뛰기

Programing

Code Up

4040

관리자 2020.04.06 19:46 조회 수 : 151

C++

재귀함수

#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

int N,M,S,T;

int map_[110][40],dt[40][110],result=110;

int serch(int room,int day){

   if(dt[room][day]!=-1)

      return dt[room][day];

   if(day==T)

      return 0;

   int min_=110,cnt=0;

   for(int i=1;i<=M;i++){

      if(map_[day+1][i]==1){

         int a=serch(i,day+1);

         if(a==-1)

            return -1;

         if(i==room){

            min_=min(min_,a);

         }else{

            min_=min(min_,a+1);

         }

         cnt++;

      }

   }

   if(cnt==0||min_==-1)

      return -1;

   return dt[room][day] = min_;

}

int main()

{

   memset(dt,-1,sizeof(dt));

    scanf("%d %d",&N,&M);

    for(int i=1;i<=N;i++){

      for(int j=1;j<=M;j++){

         char a;

         scanf(" %c",&a);

         map_[i][j]=(a=='X')? 0:1;

      }

    }

    scanf("%d %d",&S,&T);

    T--;

    for(int i=1;i<=M;i++){

      if(map_[S][i]==1)

         result=min(result,serch(i,S));

    }

    if(result==110)

      result=-1;

    printf("%d",result);

    return 0;

}

Bottom-up

#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

int N,M,S,T;

int map_[110][40];

int main()

{

    scanf("%d %d",&N,&M);

    for(int i=1;i<=N;i++){

      for(int j=1;j<=M;j++){

         char a;

         scanf(" %c",&a);

         map_[i][j]=(a=='X')? 0:1+map_[i-1][j];

      }

    }

    scanf("%d %d",&S,&T);

    T--;

    int t=T,cnt=0;

    while(t>=S){

        int max_=-1;

        cnt++;

        for(int i=1;i<=M;i++){

            max_=max(max_,map_[t][i]);

        }

        if(max_<1){

            printf("-1");

            return 0;

        }

        t-=max_;

    }

    printf("%d",cnt-1);

 

    return 0;

}

 
번호 제목 글쓴이 날짜 조회 수
공지 안내사항 관리자 2019.12.02 176
201 4893 관리자 2019.12.20 146
200 4878 관리자 2019.12.20 146
199 4848 관리자 2019.12.20 149
198 4698 관리자 2019.12.20 145
197 4685 관리자 2019.12.20 203
196 4073 관리자 2020.04.06 157
195 4068 관리자 2020.04.06 214
194 4065 관리자 2019.12.20 152
193 4064 관리자 2020.04.06 154
192 4059 관리자 2020.04.06 5938
191 4055 관리자 2020.04.06 153
190 4044 관리자 2020.04.06 159
189 4043 관리자 2020.04.06 152
» 4040 관리자 2020.04.06 151
187 4039 관리자 2019.12.20 154
186 4035 관리자 2020.04.06 156
185 4034 관리자 2020.04.06 148
184 4028 관리자 2020.04.06 166
183 4023 관리자 2019.12.20 175
182 3740 관리자 2019.12.20 213
181 3730 관리자 2019.12.20 177
180 3719 관리자 2019.12.20 155
179 3716 관리자 2019.12.20 144
178 3713 관리자 2019.12.20 164
177 3712 관리자 2019.12.20 161
176 3709 관리자 2019.12.20 147
175 3708 관리자 2019.12.20 114
174 3707 관리자 2019.12.20 109
173 3705 관리자 2019.12.20 112
위로