蓝桥杯 G将军的敢死队

G将军的敢死队

G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军)。现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死队队员的独立性,要求如果一名士兵在敢死队中,他的直接上级不能在敢死队中。
请问,G将军有多少种派出敢死队的方法。注意,G将军也可以作为一个士兵进入敢死队。
输入格式
输入的第一行包含一个整数n,表示包括G将军在内的军队的人数。军队的士兵从1至n编号,G将军编号为1。
接下来n-1个数,分别表示编号为2, 3, …, n的士兵的直接上级编号,编号i的士兵的直接上级的编号小于i。

#include <iostream>
int a[100001],b[100001];
int n,t;
using namespace std;
int ans=0;
int dfs(int t) {
	if(t>n) {//已经选完了
		ans++;
		return ans;
	}
	if(a[b[t]]==0) {//如果他上级已经出列
		dfs(t+1);
	} else {//若没有 ,可以做两种判断
		a[t]=0;
		dfs(t+1);
		a[t]=1;
		dfs(t+1);
	}
}
int main() {
	int i,j;
	scanf("%d",&n);
	t=0;
	a[0]=;
	for(int i=1; i<=n; i++)
		a[i]=i;
	b[1]=0;
	for(int i=2; i<=n; i++)
		cin>>b[i];
	printf("%d\n",(dfs(1)-1)%10007);
}
}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zengyz-wh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值