CCF(再卖菜60分)爆搜+记忆化搜索+差分约束

Posted garrettwale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF(再卖菜60分)爆搜+记忆化搜索+差分约束相关的知识,希望对你有一定的参考价值。

201809-4

再卖菜

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int n;
int a[303];
int b[303];
bool flag=false;
void dfs(int k,int now,int pre,int pre1)//已经遍历到第k个了.pre表示前1个,pre1表示前两个
    if(flag)
        return;
    if(k>n)
        return;
    
    if(k==n)
        if((now+pre+pre1)/3!=a[k-2])
            return;
        else b[k-2]=pre;
        if((now+pre)/2!=a[k-1])
            return;
        else 
            b[k-1]=now;
            flag=true;
            return;
        
    else if(k==2)
        if((now+pre)/2!=a[k-2])
            return;
        else b[k-2]=pre;
    else if(k!=1)
        if((now+pre+pre1)/3!=a[k-2])
            return;
        else b[k-2]=pre;
    
    for(int i=1;i<=298;i++)
        dfs(k+1,i,now,pre);
    

int main()
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    
    dfs(0,0,0,0);
    for(int i=0;i<n-1;i++)
        cout<<b[i]<<" ";
    
    cout<<b[n-1]<<endl;
    //system("pause");
    return 0;

以上是关于CCF(再卖菜60分)爆搜+记忆化搜索+差分约束的主要内容,如果未能解决你的问题,请参考以下文章

CCF-再卖菜-20180904

CCF201809-4 再卖菜(100分)DFS

ccf 201809-4 再卖菜

COJ 1686:记忆化搜索

3/28 并查集+最短路+爆搜dfs(记忆化,方向控制)

2018/3/12