zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    2020了,初/中级前端面试你应该知道的(上)
    Vue页面权限控制和动态添加路由
    Javascript获取数组中最大和最小值
    localStorage和cookie的跨域解决方案
    移动端常见问题汇总
    码云git本地仓库链接远程仓库
    IntelliJ IDEA Activation code亲测可用
    Sping4之注入参数
    Sping4之依赖注入
    Spring核心之IOC
  • 原文地址:https://www.cnblogs.com/jhz033/p/5494758.html
Copyright © 2011-2022 走看看