只能过50,,,究竟是为什么?
查看原帖
只能过50,,,究竟是为什么?
340222
代码练习生楼主2020/8/1 14:25
#include<stdio.h>

long long  b[10001],max=0,fama[10001];
int N,C;

void
dfs(long long cur,int index){
    if(cur+b[index]<=max)
        return ;
    if(index==0)
        return ;
    if(cur>C)
        return ;
    max=cur<max?max:cur;
    
    dfs(cur+fama[index],index-1);
    dfs(cur,index-1);
}

int
main(){
    int i;
    
    scanf("%d %d",&N,&C);
    
    i=1;
    while(i<=N){
        scanf("%lld ",fama+i);
        if(fama[i]>C)
            break;
        b[i]=b[i-1]+fama[i];
        i++;
    }
    dfs(0,i-1);
    printf("%lld",max);
    return 0;
}
2020/8/1 14:25
加载中...