zoukankan      html  css  js  c++  java
  • UESTC--1252--24点游戏(dfs)

    

    24点游戏

    Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu

    Status

    Description

     24点就是给你一串数字,问你是否通过加减乘除括号构成 24点。

    沈爷觉得这个很好玩,就决定考考你,给你 4个数,可以交换位置,可以用加减乘除和括号,是否能构成 24点呢?

    注意哦~这里的除法并不是整数除法,比如样例

    Input

    第一行 T,表示有多少组测试数据, 1≤T≤50

    接下来 T行,每行 4个正整数   a1,    a2,    a3,    a4,表示每个数都是多少,   1≤ai≤13

    Output

    对于每一次询问,如果能够凑成 24点,输出yes,否则输出no

    Sample Input

    2
    3 3 8 8
    1 1 1 1

    Sample Output

    yes
    no

    Hint

     3  3  8  8

    就可以构造出  8÷(3–8÷3)=24

    Source

    第七届ACM趣味程序设计竞赛第二场(正式赛)

    看着像一个排列组合一样,把所有的数字排序,然后列举所有可能的运算,这里传递的参数只有一个x,用来表示已经运算的次数,显然总共要运算四次,每次运算的时候取num【i】与后边的数字进行运算,x-1表示运算次数减少一个,区间也会减少,但是因为num【j】已经使用了,所以把将要消失的num【x-1】给num【j】,使得每一个数字都会被用到,因为运算结果尽量前移并且区间向前减小,所以最后结果存储在num【0】中,数据类型是double的,存储是近似存储,需要判断精度
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    double num[10];
    bool flag;
    bool dfs(int x)
    {
    	if(x==1)
    	{
    		if(fabs(num[0]-24)<1e-2)
    		return true;
    		else 
    		return false;
    	}
    	double a,b;
    	for(int i=0;i<x;i++)
    	{
    		for(int j=i+1;j<x;j++)
    		{
    			a=num[i];
    			b=num[j];
    			num[j]=num[x-1];//x表示运算的次数,也用来确定区间,
    			//每次x-1,同时区间缩小,num[0]作为运算的结果 
    			num[i]=a+b;if(dfs(x-1)) return true;
    			num[i]=a-b;if(dfs(x-1)) return true;
    			num[i]=b-a;if(dfs(x-1)) return true;
    			num[i]=a*b;if(dfs(x-1)) return true;
    			if(b!=0) num[i]=a/b;if(dfs(x-1)) return true;//除法分母不为0 
    			if(a!=0) num[i]=b/a;if(dfs(x-1)) return true;
    			num[i]=a;//回溯 
    			num[j]=b;
    		}
    	}
    	return false;
    }
    int main()
    {
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		flag=false;
    		for(int i=0;i<4;i++)
    		cin>>num[i];
    		if(dfs(4))
    		cout<<"yes"<<endl;
    		else 
    		cout<<"no"<<endl;
    	}
    	return 0;
    }

  • 相关阅读:
    [置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
    15 个 Docker 技巧和提示
    Docker资源管理探秘:Docker背后的内核Cgroups机制
    SVN通过域名连不上服务器地址(svn: E175002: OPTIONS request failed on '/svn/yx-SVN-Server' Connection refused: connect)
    图片点击放大功能
    jquery-选择checkbox的多种策略
    HTML-input标签需设置的属性
    MyBatis-配置缓存
    SpringMVC redirect乱码问题
    Mysql-左连接查询条件失效的解决办法
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273420.html
Copyright © 2011-2022 走看看