关注

蓝桥杯算法提高VIP-种树

#include<iostream>
using namespace std;
int a[2200];//记录价值
int site[2200];//记录位置是否栽树
int n,m,maxx; 
bool cont(int d){
    return (site[d]==0&&site[(d-1+n)%n]==0&&site[(d+1)%n]==0);
}
void dfs(int x,int s,int sum){//x当前种树位置,s剩余种树数量,sum总价值 
    site[x]=1;
    sum+=a[x];
    if(s){
        for(int i=x+2;i<n;i++){
            if(cont(i)){
                dfs(i,s-1,sum);
            }
        }
    }else{
        if(sum>maxx)maxx=sum;
    }
    site[x]=0;
}
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    if((n/2)>=m){
        for(int i=0;i<n;i++){
            dfs(i,m-1,0);
        }
        cout<<maxx<<endl;
    }else{
        cout<<"Error!"<<endl;
    }
    return 0;
}

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/x15943088920/article/details/158352186

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--