字母组合

题目描述: 由 A,B,C 这3个字母就可以组成许多串。 比如:“A”,“AB”,“ABC”,“ABA”,“AACBB” … 现在,小明正在思考一个问题: 如果有a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串呢?

using namespace std;
const int N = 1e6 + 10;
char s[N];
bool t[N][4];
int n;
int ans;
int a, b, c;
int dfs(int u, int a, int b, int c) {
	if (u > n) {
		ans ++;
//		for(int i = 1; i <= u; i ++)cout <<s[i];
//		cout <<endl;
		return 0;
	}
	for (int i = 1; i <= 3; i ++) {
		if (a != 0 && t[u][1] == false && i == 1) {
			t[u][1] = true;
			dfs(u + 1, a - 1, b, c);
			t[u][1] = false;
		}
		if (b != 0 && t[u][2] == false && i == 2) {
			t[u][2] = true;
			s[u] = 'B';
			dfs(u + 1, a, b - 1, c);
			t[u][2] = false;
		}
		if (c != 0 && t[u][3] == false && i == 3) {
			t[u][3] = true;
			s[u] = 'C';
			dfs(u + 1, a, b, c - 1);
			t[u][3] = false;
		}
	}


}
int main() {

	cin >> a >> b >> c >> n;
	dfs(1, a, b, c);
	cout << ans << endl;
}
全部评论

相关推荐

Java转测开第一人:这种就是饼 把应届当廉价劳动力用完然后丢掉
你觉得今年秋招难吗
点赞 评论 收藏
分享
投递亚信科技(中国)有限公司等公司6个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务