方法一
#include<iostream>
using namespace std;
int a[5];
int cnt=0;
void dfs(int cur)
{
if(cur==5)
{
int c=0;
//for(int i=0;i<5;i++)
//cout<<a[i]<<" ";
for(int i=0;i<5;i++)
if(a[i]==0) c++;
if(c%2==0) cnt++;
return ;
}
for(int i=0;i<4;i++)
{
a[cur]=i;
dfs(cur+1);
}
}
int main()
{
dfs(0);
cout<<cnt<<endl;
return 0;
}
方法二
当拿出的顺序不按顺序的,相同的球不同的顺序算不同拿法时,可以用一下方法。
#include<iostream>
using namespace std;
int a[5];
int ans;
void f(int cur)
{
if(cur==5){
if(a[0]%2==0) ans++;
return ;
}
for(int i=0;i<4;i++)
{
a[i]++;
f(cur+1);
a[i]--;
}
}
int main()
{
f(0);
cout<<ans<<endl;
return 0;
}
间接递归-组合串
最新推荐文章于 2023-02-22 23:26:03 发布