1. 排列小球(C++,67%,TLE)
#include <iostream>
#include <vector>
using namespace std;
int bs[3];
int n;
int ans;
vector<int> tmp;
void dfs(int step) {
if (tmp.size() == n) {
ans += 1;
return;
}
for (int i = 0; i < 3; i++) {
if (bs[i] > 0 && i != tmp.back()) {
tmp.push_back(i);
bs[i] -= 1;
dfs(step + 1);
bs[i] += 1;
tmp.pop_back();
}
}
}
void solve() {
cin >> bs[0] >> bs[1] >> bs[2];
n = bs[0] + bs[1] + bs[2];
ans = 0;
for (int i = 0; i < 3; i++) {
if (bs[i] > 0) {
tmp.push_back(i);
bs[i] -= 1;
dfs(1);
bs[i] += 1;
tmp.pop_back();
}
}
cout << ans;
}
int main() {
solve();
//cout << endl;
//system("PAUSE");
return 0;
}