rt

详情

代码(poker粘贴+改亿下)(或者帮我看看#10数据我不知道咋看

#include<bits/stdc++.h>
#define ll long long
#define db double
#define cr char
#define rep(i,x,y) for(int i=x;i<=y;i++)
using namespace std;
ll f,n;
db a[5],ans[5][5];
char p[5]={' ','+','-','*','/'};
bool cmp(db x,db y){
	return x>y;
}
db js(db x,db y,ll ys){
	if(ys==1) return x+y;
	if(ys==2) return x-y;
	if(ys==3) return x*y;
	if(ys==4) return x/y;
}
void dfs(ll t,db a[]){
    if(f) return;
	if(t==1&&a[1]==24){
        f=1;
		return;
	}
	if(t==1) return;
	for(int i=1;i<=t;i++)
		for(int j=1;j<=t;j++)
            if(i!=j)
			for(int k=1;k<=4;k++){
				if(k==4){
					if(a[j]>0){
					ans[5-t][1]=a[i],ans[5-t][2]=k,ans[5-t][3]=a[j];
					db tk[5];
					for(int l=0;l<=4;l++) tk[l]=0;
					for(int l=1;l<=t;l++) tk[l]=a[l];
					tk[i]=js(tk[i],tk[j],k);
					for(int l=j;l<t;l++) tk[l]=tk[l+1];
					ans[5-t][4]=tk[i];
					dfs(t-1,tk);
					}
				}
				else{
					ans[5-t][1]=a[i],ans[5-t][2]=k,ans[5-t][3]=a[j];
					db tk[5];
					for(int l=0;l<=4;l++) tk[l]=0;
					for(int l=1;l<=t;l++) tk[l]=a[l];
					tk[i]=js(tk[i],tk[j],k);
					for(int l=j;l<t;l++) tk[l]=tk[l+1];
					ans[5-t][4]=tk[i];
					dfs(t-1,tk);
				}
			}
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
	    cin>>a[1]>>a[2]>>a[3]>>a[4];
        f=0;
	    dfs(4,a);
        if(f) cout<<"YES"<<endl;
	    else cout<<"NO"<<endl;
    }
	return 0;
}

2 条评论

  • 1

信息

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