找不出bug
  • 板块P1236 算24点
  • 楼主merryzm
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/25 23:15
  • 上次更新2023/10/27 09:55:57
查看原帖
找不出bug
321588
merryzm楼主2022/9/25 23:15
#include<bits/stdc++.h>
using namespace std;
int a[10],book[10],fh[10],t1[10],t2[10],f; 
void check(){
	for(int i=1;i<=4;i++){
	//	cout<<a[i]<<" ";
		if(a[i]==24){
			f=1;
			break;
		}
	}
	if(f){
		for(int i=1;i<4;i++){
			cout<<t1[i];
			if(fh[i]==1)cout<<"+"<<t2[i]<<"="<<t1[i]+t2[i]<<endl;
			if(fh[i]==2)cout<<"-"<<t2[i]<<"="<<t1[i]-t2[i]<<endl;
			if(fh[i]==3)cout<<"*"<<t2[i]<<"="<<t1[i]*t2[i]<<endl;
			if(fh[i]==4)cout<<"/"<<t2[i]<<"="<<t1[i]/t2[i]<<endl;
		}
		return ;
	}
}
void dfs(int x){
	if(x==5){
		check();
		return ;
	}
	for(int i=1;i<=4;i++){
		for(int j=1;j<=4;j++){
			if(i!=j&&book[i]==0&&book[j]==0&&a[i]>=a[j]){
				//加
				t1[x]=a[i];
				t2[x]=a[j];
				fh[x]=1;
				//book[i]=1;
				book[j]=1;
				a[i]=a[i]+a[j];
				if(a[i]>0)dfs(x+1);
			//	book[i]=0;
				book[j]=0;
				a[i]-=a[j];
				//减
				t1[x]=a[i];
				t2[x]=a[j];
				fh[x]=2;
			//	book[i]=1;
				book[j]=1;
				a[i]-=a[j];
				if(a[i]>0)dfs(x+1);
			//	book[i]=0;
				book[j]=0;
				a[i]+=a[j];
				//乘
				t1[x]=a[i];
				t2[x]=a[j];
				fh[x]=3;
			//	book[i]=1;
				book[j]=1;
				a[i]*=a[j];
				if(a[i]>0)dfs(x+1);
			//	book[i]=0;
				book[j]=0; 
				a[i]/=a[j];
				//除
				if(a[i]%a[j]!=0)continue; 
				t1[x]=a[i];
				t2[x]=a[j];
				fh[x]=4;
			//	book[i]=1;
				book[j]=1;
				a[i]/=a[j];
				if(a[i]>0)dfs(x+1);
			//	book[i]=0;
				book[j]=0; 
				a[i]*=a[j];
			}
		}
	}
}
int main()
{
	cin>>a[1]>>a[2]>>a[3]>>a[4];
	dfs(1);
	if(!f){
		cout<<"No answer!";
	}
}
2022/9/25 23:15
加载中...