Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 5397
- 구현
- 백준 5397
- 풀이
- qorwns
- 시간 복잡도
- 버킷 정렬
- 별 찍기 10
- 백준
- 해시 구현
- 백준 2447
- AVL 시간 복잡도
- 스택의 특징
- 백준 1158
- 1764
- 백준 17471
- heap
- 해시구현
- 백준 17822
- 원판 돌리기
- ㅣ풀이
- C/C++ 구현
- 게리멘더링2
- 백준 1406
- 조세퍼스 순열
- 백준 17779
- Stack 이란
- dfs
- 자료구조
- c#
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 1937] 욕심쟁이 판다 본문
https://www.acmicpc.net/problem/1937
1937번: 욕심쟁이 판다
n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 대나무를 먹는다. 그런데 단 조건이 있다. 이 판다는 매우 욕심이 많아서 대나무를 먹고 자리를 옮기면 그 옮긴 지역에 그 전 지역보다 대나무가 많이 있어야 한다. 만약에 그런 지점이 없으면 이 판다는 불만을 가지고 단식 투쟁을 하다가 죽게 된다(-_-) 이
www.acmicpc.net
1/8일 풀었던 문제
요구사항
1. 판다가 제일 오래 살 수있는 경로 구하기
풀이
1. dp로 현재 좌표에서 부터 몇일을 살 수 있는지 미리 저장한다.
#include <stdio.h>
#include <algorithm>
#include <list>
#include <iostream>
using namespace std;
struct NODE {
int prev;
int next;
int val;
};
int n;
int map[501][501];
int dp[501][501];
int dr[4] ={-1,0,1,0};
int dc[4] ={0,-1,0,1};
int f(int r, int c){
int &ret=dp[r][c];
if(ret !=1){
return ret;
}
for(int i=0 ; i < 4; i++){
int nr = r+dr[i];
int nc = c+dc[i];
if(nr<0 || nc<0 || nr>=n || nc>=n)
continue;
if(map[nr][nc]>map[r][c]){
ret = max(ret,f(nr,nc)+1);
}
}
return ret;
}
int main(){
cin>>n;
for(int i=0 ; i < n ; i++){
for(int j=0 ; j <n ; j++){
dp[i][j]=1;
scanf("%d",&map[i][j]);
}
}
int ans=0;
for(int i=0 ; i < n ; i++){
for(int j=0 ; j <n ; j++){
ans=max(ans,f(i,j));
}
}
cout<<ans<<endl;
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 1753]최단 경로 (0) | 2020.01.09 |
---|---|
[백준 10825] 국영수 (0) | 2020.01.09 |
[백준 11004] k번째 수 (0) | 2020.01.09 |
[백준 11651]좌표 정렬하기2 (0) | 2020.01.09 |
[백준 11650] 좌표 정렬하기 (0) | 2020.01.09 |
Comments