算 24 5,4 ,9,1样例过不了
  • 板块学术版
  • 楼主dreamlzx
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/3/19 21:58
  • 上次更新2023/10/28 06:09:39
查看原帖
算 24 5,4 ,9,1样例过不了
570251
dreamlzx楼主2022/3/19 21:58
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iomanip>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
using namespace std;
bool flag,used[5];
double a[5];
void dfs(int x){
    if(flag)return;
    if(x==4){
        int oi=0;
        for(int i=1;i<=4;i++)if(!used[i])oi=i;
        cout<<a[oi]<<endl;
        if(fabs(a[oi]-24.0)<0.0001){
            //cout<<a[oi]<<endl;
            flag=1;
        }
        return;
    }
    for(int i=1;i<=4;i++){
        for(int j=i+1;j<=4;j++){
            if(!used[i]&&!used[j]){
                used[j]=1;//使用过
                double n=a[i],m=a[j];
                a[i]=n+m;
                dfs(x+1);
                a[i]=n-m;
                dfs(x+1);
                a[i]=m-n;
                dfs(x+1);
                a[i]=m*n;
                dfs(x+1);
                a[i]=n/m;
                dfs(x+1);
                a[i]=m/n;
                dfs(x+1);
                used[j]=0;
            }
        }
    }
}
int main(){
    while(1) {
        flag = 0;
        for (int i = 1; i <= 4; i++) cin >> a[i];
        if (a[1] == 0 && a[2] == 0 && a[3] == 0 && a[4] == 0)break;
        dfs(1);
        if(flag)cout<<"YES";
        else cout<<"NO";
        cout<<endl;
    }
}
2022/3/19 21:58
加载中...