ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PAT甲级1004

2022-02-22 23:34:07  阅读:180  来源: 互联网

标签:PAT level int scanf no father 甲级 child 1004


代码参考漂流瓶大佬,以下是原文链接。[PAT甲级 1004.Counting Leaves (30) 题目翻译与答案]先传代码,明天再修改。(https://blog.csdn.net/qq278672818/article/details/54915636)

#include <iostream>
#include <algorithm>
using namespace std;
struct Node
{
	int father;
	int level;
	bool no_child;
};
Node v[101];
int level[100];

int main()
{
	int n, m, c, ID, child,max_level=1;
	scanf_s("%d%d",&n,&m);//通过scanf_s录入总结点数和叶子结点个数
	for (int i=1;i<=100;i++ )
	{
		v[i].father = 0;
		v[i].level = 0;
		v[i].no_child = 1;
	}//用for循环初始化Node[100]
	for (int i=1;i<=m;++i)//用for循环录入m行主结点及其叶子结点
	{
		scanf_s("%d%d", &ID, &c);
		v[ID].no_child = 0;
		for(int j=0;j<c;j++)//通过for循环录入ID的孩子结点
		{
			scanf_s("%d", &child);
			v[child].father = ID;
		}
	}
	v[1].level = 1;//根结点层级定义为1
	for (int i=1;i<=n;i++)//通过for循环遍历所有结点
	{
		for (int j=1;j<=n;j++)//通过for循环遍历所有结点,修正所有结点的层级  此处未能执行,应该是01和1的识别问题
		{
			if (v[j].father==i)
			{
				v[j].level = v[v[j].father].level + 1;
				max_level = max(max_level, v[j].level);
			}
		}
	}
	for (int i=1;i<=n;i++)//若某一结点没有孩子结点,则该结点所在层级没有孩子结点的结点数+1
	{
		if (v[i].no_child==1)
		{
			level[v[i].level]++;
		}
	}
	for (int i=1;i<max_level;i++)//题目要求最后一个输出字符后面没空格,故将level[max_level]单独用一条命令输出,不放在for循环中
	{
		cout << level[i] <<" ";
	}
	cout << level[max_level];
}   

标签:PAT,level,int,scanf,no,father,甲级,child,1004
来源: https://blog.csdn.net/weixin_43849148/article/details/123079816

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有