2 条题解
-
4
#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
信息
- ID
- 10
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 70
- 已通过
- 16
- 上传者