1. 取字母组成串
A B C D中取5次,每个字母都可以重复取出,形成一个串。
现在要求,串中A出现的次数必须为偶数(0次也算偶数)。
求可以形成多少种可能的串。
#include<cstdio>
using namespace std;
int a[5],ans;
void dfs(int t){
if(t==5){
if(a[1]%2==0) ans++;
return;
}
for(int i=1;i<=4;i++){
a[i]++;
dfs(t+1);
a[i]--;
}
}
int main(){
dfs(0);
printf("%d",ans);
return 0;
}
倒不如看看数学解法,多么美妙:
A0个时,剩下5个位置放三种,就是3^5种
A2个时,剩下3个位置放三种,A的位置有C(5,2)种,答案是C(5,2)*3^3种
A4个时,剩下1个位置放三种,A的位置有C(5,4)种,答案是C(5,4)*3种
最后加起来就好啦。