rqnoj-74

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
string card="!A234567890JQK";
void dfs(int start,int end,double *a)
{
    int i,j,k,t;
    double b[5];
    if(start==end)
    {
        if(abs(a[start]-24)<0.00001)
        {
            cout<<"yes"<<endl;
            exit(0);
        }
        else
            return ;
    }
    for(i=start;i<=end;++i)
        for(j=start;j<=end;++j)
            if(i!=j)
            {
                t=0;
                for(k=start;k<=end;++k)
                    if(k!=i && k!=j)
                    {
                        t++;
                        b[t]=a[k];
                    }
                t++;
                b[t]=a[i]+a[j];
                dfs(1,t,b);
                b[t]=a[i]-a[j];
                dfs(1,t,b);
                b[t]=a[i]*a[j];
                dfs(1,t,b);
                if(a[j]!=0)
                {
                    b[t]=a[i]/a[j];
                    dfs(1,t,b);
                }
            }
}
int main()
{
    string c;
    int i=1;
    double a[5];
    //fstream cin("d:\\test.txt");
    for(i=1;i<=4;i++)
    {
        cin>>c;//输入的数据可能为 10 1 2 3 4 5 6 7 8 9 A J Q K 无语
        if(c=="10")
            c="0";
        if(c=="1")
            a[i]=1;
        else
            a[i]=card.find(c);
    }
    dfs(1,4,a);
    cout<<"no"<<endl;
    return 0;
}


你可能感兴趣的:(rqnoj-74)