1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; int a[4]; string t = "+-*"; bool f; bool calc(string r){ string o = r; int b[4]; for(int i = 0;i < 4;i++){ b[i] = a[i]; } for(int i = 0;i < r.size();i++){ if(r[i] == '*'){ b[i+1] = b[i+1] * b[i]; b[i] = 0; if(i == 0) r[i] = '+'; else r[i] = r[i-1]; } } int s = b[0]; for(int i = 1;i < 4;i++){ if(r[i-1] == '+') s = s + b[i]; else if(r[i-1] == '-')s = s - b[i]; } if(s == 24){ f = true; } } //递归所有的运算情况 void dfs(string r){ if(r.size() == 3){ //cout<<r<<endl; //每产生一个运算,就用这个运算要验证能否得到24点 calc(r); return; } for(int i = 0;i < t.size();i++){ dfs(r+t[i]); } } int main(){ int n,c = 0; cin>>n; for(int i = 1;i <= n;i++){ for(int j = 0;j < 4;j++){ cin>>a[j]; } f = false; dfs(""); if(f == true) c++; } cout<<c; return 0; }
- 1
信息
- ID
- 873
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者