首页 > 试题广场 >

则输出为( )

[单选题]
#include<bits/stdc++.h>
using namespace std;
vector<int>g[10];
int ans = 0;
void dfs(int x){
if(g[x].size() == 0){
ans++;
return;
}
for(int i = 0; i < g[x].size(); ++i){
dfs(g[x][i]);
}
}
int main(){
int n, x;
scanf("%d", &n);
for(int i = 2; i <= n; ++i){
scanf("%d", &x);
g[x].push_back(i);
}
dfs(1);
cout<<ans<<endl;
return 0;
}
上述程序的输入为:
9
1 2 2 1 5 6 6 6
则输出为( )
  • 4
  • 5
  • 6
  • 7
2-9共8个空间,没有放值的空间使计数变量加1,第3 4 7 8 9 个空间没有放值,所以是5
发表于 2019-09-11 11:49:12 回复(2)

当调用dfs函数时,vector里面没有 3 4 7 89的索引元素,所以对应size为0,使得值加1

发表于 2019-10-26 14:33:37 回复(0)