社区讨论
悬赏,80分,求调。
P1236算24点参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m5ywdvbl
- 此快照首次捕获于
- 2025/01/16 13:36 去年
- 此快照最后确认于
- 2025/01/16 14:35 去年
CPP
#include<bits/stdc++.h>
using namespace std;
vector<int> nums(4);
bool solve(vector<int>& nums, int target){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(i!=j){
for(int k=0;k<4;k++){
if(k!=i && k!=j) {
for(int l=0;l<4;l++){
if(l!=i && l!=j && l!=k){
vector<int> order={nums[i], nums[j], nums[k], nums[l]};
for(int op1=0;op1<4;op1++){
for(int op2=0;op2<4;op2++){
for(int op3=0;op3<4;op3++){
int res1, res2, res3;
switch(op1){
case 0:res1=order[0]+order[1]; break;
case 1:res1=order[0]-order[1]; break;
case 2:res1=order[0]*order[1]; break;
case 3:if(order[1]!=0 && order[0]%order[1]==0) res1=order[0]/order[1]; else continue;
}
switch(op2){
case 0:res2=res1+order[2]; break;
case 1:res2=res1-order[2]; break;
case 2:res2=res1*order[2]; break;
case 3:if(order[2]!=0 && res1%order[2]==0) res2=res1/order[2]; else continue;
}
switch(op3){
case 0:res3=res2+order[3]; break;
case 1:res3=res2-order[3]; break;
case 2:res3=res2*order[3]; break;
case 3:if(order[3]!=0 && res2%order[3]==0) res3=res2/order[3]; else continue;
}
if(res3==target){
if(order[0]>=order[1]){
cout<<order[0];
switch(op1){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<order[1]<<"="<<res1<<endl;
}else{
cout<<order[1];
switch(op1){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<order[0]<<"="<<res1<<endl;
}
if(res1>=order[2]){
cout<<res1;
switch(op2){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<order[2]<<"="<<res2<<endl;
}else{
cout<<order[2];
switch(op2){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<res1<<"="<<res2<<endl;
}
if(res2>=order[3]){
cout<<res2;
switch(op3){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<order[3]<<"=24"<<endl;
}else{
cout<<order[3];
switch(op3){
case 0:cout<<"+"; break;
case 1:cout<<"-"; break;
case 2:cout<<"*"; break;
case 3:cout<<"/"; break;
}
cout<<res2<<"=24"<<endl;
}
return true;
}
}
}
}
}
}
}
}
}
}
}
return false;
}
int main() {
for(int i=0;i<4;i++)
cin>>nums[i];
if(!solve(nums, 24))
cout<<"No answer!"<<endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...