结果填空 取字母成串(DFS * C语言)

A B C D中取5次,每个字母都可以重复取出,形成一个串。

现在要求,串中A出现的次数必须为偶数(0次也算偶数)。

求可以形成多少种可能的串。


答案

528


解题过程

一开始没想到是深搜,被数学中的组合给干扰了(我数学不好,数学好的这题能用数学解出答案)。这题将ABCD分别用数字0123代替。用数组A[5]来模拟替换的过程:

0 0 0 0 0

0 0 0 0 1

0 0 0 0 2

0 0 0 0 3

0 0 0 1 0

0 0 0 1 1

……

可以发现这就是深搜的作用,从最后一个开始回溯,在回溯的过程中就把每个情况列出来了,你需要做的是对每个情况进行判断。


附上代码

#include
using namespace std;
int a[5]={0};//5个位置用来放ABCD 
int counts=0;
int num=5;
int main()
{
	void DFS(int);
	bool is_even();//判断是A否是偶数 
	DFS(0);
	cout<

 

你可能感兴趣的:(C语言)