谁帮我调调这份对(a@b)@(c@d)情况免疫的代码
  • 板块P1236 算24点
  • 楼主ouxiyao
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/11 18:07
  • 上次更新2024/12/11 21:30:59
查看原帖
谁帮我调调这份对(a@b)@(c@d)情况免疫的代码
1155764
ouxiyao楼主2024/12/11 18:07
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std; 
int a[5];
int b[5][3];
char ch[4];
void out(){
	for(int i = 1;i<=3;i++)printf("%d%c%d=%d\n",max(b[i][0],b[i][1]),ch[i],min(b[i][0],b[i][1]),b[i][2]);
	exit(0);
}
void search(int step){
	if(step==4&&a[4]==24)out();
	else if(step==4)return ;
	int s,t;
	s = a[step],t = a[step+1];
	b[step][0] = a[step],b[step][1] = a[step+1];
	a[step+1] = s+t;
	b[step][2] = s+t;
	ch[step] = '+';
	search(step+1);
	a[step] = s,a[step+1] = t;
	
	a[step+1] = s-t;
	ch[step] = '-';
	b[step][2] = s-t;
	search(step+1);
	a[step] = s,a[step+1] = t;
	
	a[step+1] = s*t;
	ch[step] = '*';
	b[step][2] = s*t;
	search(step+1);
	a[step] = s,a[step+1] = t;
	
	if(s%t==0){
		a[step+1] = s/t;
		ch[step] = '/';
		b[step][2] = s/t;
		search(step+1);
		a[step] = s,a[step+1] = t;
	}
}
int main(){
	cin>>a[1]>>a[2]>>a[3]>>a[4];
	search(1);
	while(next_permutation(a+1,a+5))search(1);
	cout<<"No answer!"<<endl;
	return 0;
} 
2024/12/11 18:07
加载中...