93分求助
查看原帖
93分求助
794701
wo_hen_la楼主2023/12/15 21:29

思路应该没问题

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[5],b[5],c[5],d[5],ans=1e18;
char ch;
int f(char cc)
{
	if(cc=='+') return 1;
	return 2;
}
int ff(int x,int y,int suan)
{
	if(suan==1) return x+y;
	return x*y;
}
main()
{
	for(int i=1;i<=4;i++) cin>>a[i],b[i]=i;
	for(int i=1;i<=3;i++){
		cin>>ch;
		c[i]=f(ch);
	}
	sort(b+1,b+5);
	do{
		for(int i=1;i<=3;i++) d[i]=i;
		do{
			//cout<<a[b[1]]<<" "<<a[b[2]]<<" "<<a[b[3]]<<" "<<a[b[4]]<<"\n";
			//cout<<c[d[1]]<<" "<<c[d[2]]<<" "<<c[d[3]]<<"\n";
			int t=ff(a[b[1]],a[b[2]],c[d[1]]);
			int tt=ff(t,a[b[3]],c[d[2]]);
			int ttt=ff(tt,a[b[4]],c[d[3]]);
			ans=min(ans,ttt);
			t=ff(a[b[1]],a[b[2]],c[d[1]]);
			tt=ff(a[b[4]],a[b[3]],c[d[2]]);
			ttt=ff(tt,t,c[d[3]]);
			ans=min(ans,ttt);
		}
		while(next_permutation(d+1,d+4));
	}
	while(next_permutation(b+1,b+5));
	cout<<ans;
	return 0;
}
2023/12/15 21:29
加载中...