题目大意:
有N个战士站成一排,需要选出来几个。选择规则如下:如果一排包括三个以上战士,然后所有战士,站在偶数位置或奇数位置被带走。直到小于等于三个战士剩下。计算有多少种方法。
解题思路:
DFS搜索
代码如下:
#include<stdio.h>
int num;
void dfs(int n)
{
if(n==3)
{
num++;
return;
}
else if(n<3)
return;
else if(n%2==0)
{
dfs(n/2);
dfs(n/2);
}
else if(n%2==1)
{
dfs(n/2);
dfs(n/2+1);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
num=0;
dfs(n);
printf("%d\n",num);
}
return 0;
}
本文介绍了一个关于从一排战士中通过特定规则选择战士的问题,并使用深度优先搜索(DFS)的方法进行解答。最终输出所有可能的选择方案数量。
6326

被折叠的 条评论
为什么被折叠?



