本文主要是介绍浙大PAT 1004题 1004. Counting Leaves,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//求树中每层的叶子节点数
#include<stdio.h>
int rel[110][110],cnt[110],node;
void dfs(int num,int level){
if(cnt[level]==-1) cnt[level]=0;
int i,j,judge=0;
for(i=1;i<=node;i++){
if(rel[num][i]==1){
judge=1;
if(level+1<=node) dfs(i,level+1);
}
}
if(judge==0) cnt[level]++;
}
int main(){
int i,j,nonleaf,fat,childs,son;
for(i=0;i<=100;i++){
cnt[i]=-1;
for(j=0;j<=100;j++){
rel[i][j]=0;
}
}
scanf("%d %d",&node,&nonleaf);
for(i=1;i<=nonleaf;i++){
scanf("%d %d",&fat,&childs);
for(j=1;j<=childs;j++){
scanf("%d",&son);
rel[fat][son]=1;
}
}
dfs(1,1);
for(i=1;i<=node;i++){
if(cnt[i]>-1&&i==1) printf("%d",cnt[i]);
else if(cnt[i]>-1) printf(" %d",cnt[i]);
}
printf("\n");
return 0;
}
这篇关于浙大PAT 1004题 1004. Counting Leaves的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!