• hihocoder 九十八周 搜索一 24点


    题目1 : 搜索一·24点

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    周末,小Hi和小Ho都在家待着。

    在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间。

    小Ho:玩点什么好呢?

    小Hi:两个人啊,不如来玩24点怎么样,不靠运气就靠实力的游戏。

    小Ho:好啊,好啊。

    <经过若干局游戏之后>

    小Ho:小Hi,你说如果要写个程序来玩24点会不会很复杂啊?

    小Hi:让我想想。

    <过了几分钟>

    小Hi:我知道了!其实很简单嘛。

    提示:24点

    输入

    第1行:1个正整数, t,表示数据组数,2≤t≤100。

    第2..t+1行:4个正整数, a,b,c,d,1≤a,b,c,d≤10。

    输出

    第1..t行:每行一个字符串,第i行表示第i组能否计算出24点。若能够输出"Yes",否则输出"No"。

    样例输入
    2
    5 5 5 1
    9 9 9 9
    样例输出
    Yes
    No
    思路:简单的dfs,但是要用浮点;
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define mod 1000000007
    #define inf 999999999
    #define esp 0.00000000001
    //#pragma comment(linker, "/STACK:102400000,102400000")
    int scan()
    {
        int res = 0 , ch ;
        while( !( ( ch = getchar() ) >= '0' && ch <= '9' ) )
        {
            if( ch == EOF ) return 1 << 30 ;
        }
        res = ch - '0' ;
        while( ( ch = getchar() ) >= '0' && ch <= '9' )
            res = res * 10 + ( ch - '0' ) ;
        return res ;
    }
    double a[5],ans;
    void dfs(double num,double gg,int step)
    {
        if(step==4)
        {
            if(num==24)
            ans=1;
            return;
        }
        //不加括号
        dfs(num+gg,a[step+1],step+1);
        dfs(num-gg,a[step+1],step+1);
        dfs(num*gg,a[step+1],step+1);
        if(gg!=0)
        dfs(num/gg,a[step+1],step+1);
        //加括号
        if(step!=3)
        {
            dfs(num,gg+a[step+1],step+1);
            dfs(num,gg*a[step+1],step+1);
            dfs(num,gg-a[step+1],step+1);
            if(a[step+1]!=0)
            dfs(num,gg/a[step+1],step+1);
        }
    }
    int main()
    {
        int x,y,z,i,t;
        scanf("%d",&x);
        while(x--)
        {
            ans=0;
            for(i=0;i<4;i++)
            scanf("%lf",&a[i]);
            sort(a,a+4);
            do
            {
                dfs(a[0],a[1],1);
            }
            while(next_permutation(a,a+4));
            if(ans)
            printf("Yes
    ");
            else
            printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    设置一个字符串中的个别字符的特殊格式
    在代码中设置字体加粗的方法
    删除字符串中某字符
    xib下这种方式创建cell
    UILabel 字体下方加下划线
    iPhone4 8.3 系统下字体下方去除下划线
    elasticsearch 深入 —— normalizer
    elasticsearch 基础 —— Common Terms Query常用术语查询
    elasticsearch 基础 —— Jion父子关系
    elasticsearch 深入 —— Top Hits Aggregation
  • 原文地址:https://www.cnblogs.com/jhz033/p/5494758.html
Copyright © 2020-2023  润新知