成都 网站建设培训,多少钱算网站,现在装网线多少钱一年,微股东微网站制作平台题目描述 众人皆知#xff0c;在编程领域中#xff0c;C是一门非常重要的语言#xff0c;不仅仅因为其强大的功能#xff0c;还因为它是很多其他面向对象语言的祖先和典范。不过这世上几乎没什么东西是完美的#xff0c;C也不例外#xff0c;多继承结构在带来强大功能的同… 题目描述 众人皆知在编程领域中C是一门非常重要的语言不仅仅因为其强大的功能还因为它是很多其他面向对象语言的祖先和典范。不过这世上几乎没什么东西是完美的C也不例外多继承结构在带来强大功能的同时也给软件设计和维护带来了很多困难。为此在java语言中只允许单继承结构并采用接口来模拟多继承。KK最近获得了一份java编写的迷你游戏的源代码他对这份代码非常感兴趣。这份java代码是由n个类组成的本题不考虑接口现在他想要知道这份代码中有多少个类没有直接基类。n个类分别用数字1..n表示。 输入
输入数据包含多组每组数据格式如下。 第一行包含两个整数n,m表示该份代码中的n个类和m个单继承关系。 后面m行每行两个整数a b表示a是b的直接基类。 输出
对于每组输入输出该组数据中有多少个类没有直接基类。每组输出占一行。 示例输入 2 1
1 2
2 0 示例输出 1
2
#include iostream
#includecstdio
#includecstdlib
#includecstring
using namespace std;
struct PTNode
{
int data;//类的标号
int parent;//当前元素的双亲结点序号类的直接基类
}p[101];
int main()
{
int n,m;
while(~scanf(%d%d,n,m))
{
int count0;//统计有多少类没有直接基类
for(int i1;in;i)
{
p[i].parent0;//初始化
p[i].datai;
}
while(m--)
{
int x,y;
scanf(%d%d,x,y);
p[y].parentx;
}
for(int i1;in;i)
if(p[i].parent0)//若父结点为空 即为根节点
count;
printf(%d\n,count);
}
return 0;
}
#include bits/stdc.h
using namespace std;
int mp[110][110];//表示谁是谁的基类
int main()
{
int n, m, s;
int a, b;
while(~scanf(%d %d, n, m))
{
if(m 0)//没有直接基类
printf(%d\n,n);
else
{
s0;//记录有直接基类的类
memset(mp, 0, sizeof(mp));//初始化
while(m--)
{
scanf(%d %d, a, b);
mp[a][b] 1;//表示a是b的直接基类
}
for(int i 1; i n; i)
{
for(int j 1; j n; j)
{
if(i ! jmp[j][i] 1)
{
s;
break;
}
}
}
printf(%d\n, n-s);
}
}
return 0;
}
#include algorithm
#include stdio.h
#include string.h//memset函数存在于此头文件中
using namespace std;
int main()
{
bool st[500];//标记含有单继承关系的类(逻辑型
int n,m,a,b;
while(~scanf(%d %d,n,m))
{
int cntn;
memset(st,false,sizeof(st));//初始化
while(m--)
{
scanf(%d %d,a,b);
if(!st[b])//b有直接基类
{
st[b]true;
cnt--;
}
}
printf(%d\n,cnt);
}
return 0;
}