1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; int a[20],b[20],n,c; char f[20]; string s = "+-*"; /* 1 2 3 4 + * * */ void pd(){ for(int i = 1;i <= n;i++){ b[i] = a[i]; } for(int i = 1;i <= n - 1;i++){ if(f[i] == '*'){ b[i+1] = b[i+1] * b[i]; if(f[i-1]=='-') b[i+1] = b[i+1] * -1; b[i] = 0; } } int s = b[1]; for(int i = 2;i <= n;i++){ if(f[i-1] == '+' || f[i-1]=='*') s = s + b[i]; else if(f[i-1] == '-') s = s - b[i]; } if(s == 24){ c++; } } //递归填入n-1个符号,然后判断结果是否是24点 void dfs(int k){ for(int i = 0;i < s.size();i++){ f[k] = s[i]; if(k == n - 1){ pd(); }else{ dfs(k+1); } } } int main(){ cin>>n; for(int i = 1;i <= n;i++){ cin>>a[i]; } dfs(1); cout<<c; return 0; }
- 1
信息
- ID
- 2776
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者