2 条题解

  • 4
    @ 2025-10-24 20:08:27
    #include<bits/stdc++.h>
    #pragma GCC optimize(2)//O系列优化
    using namespace std;
    double a[5];
    bool t,v[5];//t表示有没有达成,v[]表示标记数组
    int n;//很直接
    void dfs(int k){
    	if(k==4){//判断临界
    		if(a[1]>23.99999&&a[1]<24.00001) t=1;//有精度误差,不然爆零
    		return ;
    	}
    	for(int i=1;i<=4;i++){
    		if(v[i]==0)//锁门战术
    			for(int j=i+1;j<=4;j++){
    				if(v[j])continue;//跳出
    				v[j]=1;//记忆化
    				double x=a[i],y=a[j];
    				a[i]=x+y;dfs (k+1);
    				a[i]=x/y;dfs (k+1);
    				a[i]=x-y;dfs (k+1);
    				a[i]=x*y;dfs (k+1);
    				a[i]=y-x;dfs (k+1);
    				a[i]=y/x;dfs (k+1);//一系列算数
    				a[i]=x;//回溯
    				v[j]=0;//回溯
    			}
    	}
    } 
    int main(){
    	ios::sync_with_stdio();
    	cin.tie(0),cout.tie(0);//应该没人不懂
    //	freopen("e.in","r",stdin);
    //	freopen("e.out","w",stdout);
    	cin>>n;
    	while(cin>>a[1]>>a[2]>>a[3]>>a[4]){//无限读入,显得我很高级		t=v[1]=v[2]=v[3]=v[4]=0;//初始化
    		dfs(1);
    		if(t==1)cout<<"YES\n";
    		else cout<<"NO\n";//输出
    	}
    	return 0;
    }
    

    点赞订阅不迷路,跟着+耗卷题目

    • -1
      @ 2025-10-24 20:08:14

      11111

      • 1

      信息

      ID
      10
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      (无)
      递交数
      70
      已通过
      16
      上传者