https://www.acmicpc.net/problem/14501
14501호: 이별
첫 번째 줄에는 백준이 얻을 수 있는 최대 승리를 입력합니다.
www.acmicpc.net
사고 과정)
1. 이중 배열에 사용할 구조를 결정하십시오! 구조를 결정했어요!
2. dfs를 사용하여 경우의 수를 확인 -> N의 수가 적기 때문에 문제가 없을 것 같습니다.
3. 결과를 전역 변수로 사용하여 최고 임금을 찾습니다.
업그레이드 포인트 또는 실생활에서 포인트 사용)
1. 전체적으로 깔끔하지 않음 ex) i, j, result 를 전역 변수로 사용했으면 더 좋았을 것 같습니다.
2. 지하철 신칸센을 1시간 정도 타면 최단 시간에 목적지에 도착할 수 있을 것 같습니다.
내 코드)
#include <stdio.h>
typedef struct conserting
{
int period;
int pay;
}conserting;
int result;
void dfs(conserting *conserting, int N, int i, int sum)
{
if (sum > result)
result = sum;
while (i < N)
{
if (conserting(i).period + i <= N)
dfs(conserting, N, i + conserting(i).period, sum + conserting(i).pay);
i++;
}
}
int main()
{
int N, i, j;
conserting conserting(15);
result = -1;
scanf("%d", &N);
i = 0;
while (i < N)
{
scanf("%d %d", &conserting(i).period, &conserting(i).pay);
i++;
}
i = 0;
j = 0;
result = 0;
dfs(conserting, N, i, 0);
printf("%d\n", result);
return (0);
}

:max_bytes(150000):strip_icc()/FinancialTechnology_Final_4196400-3a7fb7e98adf4370b6e493034ade80bd.jpg)