2579번 - 계단 오르기
#include
using namespace std;
int ggadan[300];
int n;
int highsc = 0;
int scores[300];
int score(int hyich ,int plus) {
int s = plus;
if (s == 3)
return 0;
if (hyich == n)
return ggadan[n];
if (hyich == n - 1)
return scores[hyich] = ggadan[hyich] + score(hyich + 1, s + 1);
if (scores[hyich] != -1)
return scores[hyich];
return scores[hyich] = max(score(hyich + 1,s+1), score(hyich + 2,1))+ggadan[hyich];
}
int main() {
cin >> n;
memset(scores, -1, 300);
memset(ggadan, 0, 300);
for (int i = 1; i < n+1; i++)
{
cin >> ggadan[i];
cout << score(0,0);
plus가 3개 연속하는거 방지인데 구현이 안되는것 같아요 왜그럴까요
댓글을 작성하려면 로그인해야 합니다.
aa2002dcks 1년 전
#include
#include
#include
using namespace std;
int ggadan[300];
int n;
int highsc = 0;
int scores[300];
int score(int hyich ,int plus) {
int s = plus;
if (s == 3)
return 0;
if (hyich == n)
return ggadan[n];
if (hyich == n - 1)
return scores[hyich] = ggadan[hyich] + score(hyich + 1, s + 1);
if (scores[hyich] != -1)
return scores[hyich];
return scores[hyich] = max(score(hyich + 1,s+1), score(hyich + 2,1))+ggadan[hyich];
}
int main() {
cin >> n;
memset(scores, -1, 300);
memset(ggadan, 0, 300);
for (int i = 1; i < n+1; i++)
{
cin >> ggadan[i];
}
cout << score(0,0);
}
plus가 3개 연속하는거 방지인데 구현이 안되는것 같아요 왜그럴까요