社区讨论
【求条】0pts,不想调了
P1236算24点参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mlhxazzk
- 此快照首次捕获于
- 2026/02/11 19:05 4 周前
- 此快照最后确认于
- 2026/02/11 19:45 4 周前
CPP
#include<bits/stdc++.h>
using namespace std;
int a[5];
bool can;
bool vis[5];
struct tot{
int a , b;
char c;
tot(int a = 0 , int b = 0 , char c = 0) : a(a) , b(b) , c(c){
}
};
stack<tot> st;
vector<tot> ans;
void C(const int &ap ,const int& bp ,const char& c){
if(a[ap] < a[bp] && (c == '*' || c == '+')){
st.push({a[bp] , a[ap] , c});
}else{
st.push({a[ap] , a[bp] , c});
}
if(c == '+'){
vis[bp] = 1;
a[ap] += a[bp];
}else if(c == '-'){
vis[bp] = 1;
a[ap] -= a[bp];
}else if(c == '*'){
vis[bp] = 1;
a[ap] *= a[bp];
}else if(c == '/'){
vis[bp] = 1;
a[ap] /= a[bp];
}
}
void C_(const int& ap ,const int& bp ,const char& c){
vis[bp] = 0;
st.pop();
if(c == '+'){
// cout << a[ap] << ' ' << a[bp] << endl;
a[ap] -= a[bp];
}else if(c == '-'){
a[ap] += a[bp];
}else if(c == '*'){
a[ap] /= a[bp];
}else if(c == '/'){
a[ap] *= a[bp];
}
}
int End(const int& a , const int& b , const char &c){
if(c == '+'){
return a + b;
}else if(c == '-'){
return a - b;
}else if(c == '*'){
return a * b;
}else if(c =='/'){
return a / b;
}
}
void dfs(const int& deep){
if(can == 1){
return;
}
cout << can;
// cout << a[1] << ' ' << a[2] << ' ' << a[3] << ' ' << a[4] << endl;
// cout << vis[1] << ' ' << vis[2] << ' ' << vis[3] << ' '<< vis[4] << endl << endl;
if(deep == 4){
for(int i = 1;i <= 4;i ++){
if(vis[i] == 0){
if(a[i] == 24){
while(!st.empty()){
ans.push_back(st.top());
st.pop();
}
reverse(ans.begin() , ans.end());
can = 1;
return;
}else{
return;
}
}
}
return;
}
for(int i = 1;i <= 4;i ++){
for(int j = 1;j <= 4;j ++){
if(vis[i] || vis[j] || i == j){
continue;
}
C(i , j , '+');
dfs(deep + 1);
C_(i , j , '+');
C(i , j , '-');
dfs(deep + 1);
C_(i , j , '-');
C(i , j , '*');
dfs(deep + 1);
C_(i , j , '*');
if(a[j] != 0 && a[i] % a[j] == 0){
C(i , j , '/');
dfs(deep + 1);
C_(i , j , '/');
}
}
}
}
signed main(){
cin >> a[1] >> a[2] >> a[3] >> a[4];
dfs(1);
for(tot i : ans){
cout << i.a << i.c << i.b << '=' << End(i.a , i.b , i.c)<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...