55分,求助大佬!!

P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles

adim @ 2018-06-11 18:53:09

TLE后四个点 dfs做的

#include<iostream>
using namespace std;
int a[1005][1005],n,ans,n2,tmp;
void dfs(int,int);
int max(int a1,int b1){
    return a1>b1?a1:b1;
}
int main(){
    int i,j;
    cin>>n;
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            cin>>a[i][j];
        }
    }
    ans=-1;n2=0;tmp=0;
    dfs(0,0);
    cout<<ans;
    return 0;
}
void dfs(int x,int y){
    int i;
    if(n2==n){
        ans=max(ans,tmp);
        return;
    }
    for(i=y;i<=y+1;i++){
        tmp=tmp+a[x][i];
        n2++;
        dfs(x+1,i);
        n2--;
        tmp=tmp-a[x][i];
    }
}

by adim @ 2018-06-11 18:59:18

我这个蒟蒻也只会dfs了


by sxyugao @ 2018-06-11 19:32:55

@2107qboi18 dfs超时很正常。。可以加上记忆化来优化


by LuckyCloud @ 2018-06-11 19:56:33

虽然暴力出奇迹,但还是要学一下DP和记忆化什么的吧


|