USACO-Section1.3 crypt1[DFS]

来源:互联网 发布:提取背景音乐的软件 编辑:程序博客网 时间:2024/04/26 17:00

题目大意:

把给定的数填到这个式子里去,使用次数不限。

这里写图片描述

样例输入:

5
2 3 4 6 8

样例输出:

1

题解:

DFS吧,加上一部分剪枝,没啥意思。。我觉得。

代码:

C++/*    ID: mujinui1    PROG: crypt1    LANG: C++*/#include<fstream>using namespace std;int k=0;int a[15],b[9];int n;void dfs(int step){    if(step==4&&a[3]*a[2]>=10){        return ;    }     if(step==5&&a[4]*a[2]>=10){        return ;    }    if(step==8&&a[3]*(a[0]+a[1]*10+a[2]*100)!=(a[5]+a[6]*10+a[7]*100)){        return ;    }     if(step==11&&a[4]*(a[0]+a[1]*10+a[2]*100)!=(a[8]+a[9]*10+a[10]*100)){        return ;    }if(step==15){    int x,y,z;    x=a[0]+a[1]*10+a[2]*100;    y=a[3]+a[4]*10;    z=a[11]+a[12]*10+a[13]*100+a[14]*1000;    if(x*y==z){    k++;    }return ;    }    for(int i=0;i<n;i++){        a[step]=b[i];        dfs(step+1);    }}int main(){    ifstream fin("crypt1.in");    ofstream fout("crypt1.out");    fin>>n;    for(int i=0;i<n;i++){        fin>>b[i];    }    dfs(0);    fout<<k<<endl;return 0;}
原创粉丝点击