E D R , A S I H C RSS

Mario

Mario

  • μ„ ν˜•νƒμƒ‰μ„ ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. μž¬κ·€ν•¨μˆ˜λ‚˜, DynamicProgramming을 μ—°μŠ΅ν•˜λŠ”λ° μ’‹μŠ΅λ‹ˆλ‹€.
  • 마리였 λ•ν›„λŠ” 마리였의 λͺ©μˆ¨μ„ μ΅œλŒ€ν•œμœΌλ‘œ 가지고 μΏ νΌλΌ μž‘μœΌλ €κ³  ν•©λ‹ˆλ‹€. 그런데, 이 λ•ν›„λŠ” κ²Œμž„μ„ λ„ˆλ¬΄ μ—¬λŸ¬λ²ˆ ν–ˆλ”λ‹ˆ 각 Stageμ—μ„œ λͺ©μˆ¨μ„ μ–»κ±°λ‚˜ μžƒλŠ” κ°μˆ˜κ°€ 항상 μΌμ •ν•©λ‹ˆλ‹€. 또, 이 λ•ν›„λŠ” λͺ¨λ“  지름길을 λ‹€ μ•Œκ³  μžˆμ–΄ μ›ν•œλ‹€λ©΄ κ΅΄λšμ„ 톡해 λ§ˆλ¦¬μ˜€λΌ ν•œ StageλΌ κ±΄λ„ˆλ›°κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.(1탄->3탄, 3->5탄 λ“±, νšŸμˆ˜μ œν•œ μ—†μŒ) 이 λ•ν›„λŠ” κ°€μž₯ λ§Žμ€ λͺ©μˆ¨μ„ 얻은 μ±„λ‘œ κ²Œμž„μ„ 끝내고 μ‹Άμ–΄ν•©λ‹ˆλ‹€.(λ§ˆμ§€λ§‰ 쿠퍼가 λ‚˜μ˜€λŠ” StageλŠ” κΌ­ λ“€λŸ¬μ•Όν•©λ‹ˆλ‹€) μ΄λ•Œ, 이 λ•ν›„λŠ” λͺ‡ 개의 λͺ©μˆ¨μœΌλ‘œ κ²Œμž„μ„ 끝낼 수 μžˆμ„κΉŒμš”?

input1:
5
1 2 3 4 5
output1: 15

input2:
4
-2 1 -4 -3
output2: -4

input3:
3
2 -3 4
output3: 6

input4:
7
1 4 -4 -6 5 -3 -1
output4: 5


judgeν•  수 μžˆλŠ” μ‚¬μ΄νŠΈκ°€ μ—†μœΌλ€λ‘œ(자체 μ œμž‘λœ λ¬Έμ œμž…λ‹ˆλ‹€) μ•Œμ•„μ„œ 잘 ν’€κ³ , ν™•μΈν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

μ’‹μ§€μ•Šμ€ μ½”λ“œ μ˜ˆμ‹œ(심지어 틀릴 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€):
#include <stdio.h>

int bigsum=0;
int mario(int arr[],int n,int k,int sum);

int main()
{
    int i,j,n,k=0,sum=0;
    int arr[100];
    
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&arr[i]);
        bigsum+=arr[i];
    }
    
    mario(arr,n,k,sum);
    printf("%d",bigsum);
    
    return 0;
}

int mario(int arr[],int n,int k,int sum)
{
    if(k==n-1){
        if(sum+arr[k]>bigsum){
            bigsum=sum+arr[k];
        }
        return 0;
    }else if(k==n-2){
        mario(arr, n, k+1,sum+arr[k]);
        return 0;
    }

    mario(arr, n, k+1,sum+arr[k]);
    mario(arr, n, k+2,sum+arr[k]);
    
    
    return 0;
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:45
Processing time 0.0110 sec