《考研机试》(四)机试题精讲

1.题(一)

解析:

  只需要知道一个三位数k:个位 = k%10

               十位 = k/10%10

               百位 = k/100 

代码:

#include<iostream>
using namespace  std;

int main() {
	for(int i=100; i<1000; i++){
		int gewei = i%10;
		int shiwei = i/10%10;
		int baiwei = i/100;
		int sum = (gewei*gewei*gewei)+(shiwei*shiwei*shiwei)+(baiwei*baiwei*baiwei);
		if( i==sum ){
			cout << i << " ";
		}
	}
	return 0;
}

2.题(二)

 解析:两种思路:1.i,j两个指针,插入排序,i是j的前面,如果i,j一样,那么j++跳过重复元素

         2.i,j两个指针使用辅助数组,辅助数组b大小=原数组a,刚开始赋值b[0]=a[0],从0开始比较,如果相等原数组指针i++,否则存到辅助数组里去

代码:

#include<iostream>
using namespace  std;

void deleteSame1(int a[], int n){
	int i, j;//定义2个指针
	for(i=0, j=1; j<n; j++){//i指向前一位,j指向后一位 

		if( a[i]!=a[j] ){//前后不相等
			a[++i] = a[j];//相当于a[++0]=a[1]即a[1]=a[1],不变
		}
		//否则前后相等,j++,i不变,即相当于跳过
	}
	//打印
	for(int k=0; k<=i; k++){
		cout << a[k] << " ";
	}
}

void deleteSame2(int a[], int n){
	int *b = new int[n];//辅助数组
	int i=0, k=0;
	b[0] = a[0];//第一位等于原数组a第一位
	while(i<n){
		if( a[i]==b[k] ){//前后相等不存取
			i++;
			continue;
		}else{//不相等存到辅助数组里
			b[++k] = a[i++];
		}
	}
	//打印
	for(int j=0; j<=k; j++){
		cout << b[j] << " ";
	}
} 

int main() {
	int a[9] = {7,10,10,21,30,42,42,42,51};
	deleteSame1(a, 9);//方法1
	deleteSame2(a, 9);//方法2
	return 0;
}

3.题(三)

 解析:找到叶子节点 = 全部节点 — 非叶子节点

    如果一个结点序号i,只要有结点的parent == i,那么结点i就是非叶子节点

代码:

#include<iostream>
using namespace std;
#define MAX_TREE_SIZE 100

//结点结构体:
typedef struct {
	char data; //结点数据域
	int parent; //结点双亲在数组中的位置
} PTNode;

//树结构体:
typedef struct {
	PTNode nodes[MAX_TREE_SIZE];  //存储树中所有的结点
	int n; //树中的结点数,n 不超过 100
}PTree;

/*
算法思想:
		  遍历结点数组,当该结点的序号有另外一个节点指向时,那么该结点为非叶节点,
		  当遍历完结点时,没有一个结点的指针指向该序号的话,那么该结点即是叶结点。
*/

//返回树中叶子结点个数=节点数目-非叶子节点数目
int GetLeavesCount(PTree T) {
	int count = 0;//统计非叶结点的个数,转换一下思考方式,否则很难直接统计叶结点个数
	//非叶子节点:只要是有其他结点指向该结点就是非叶子结点
	for(int i=0; i<T.n; i++){
		for (int j=0; j<T.n; j++) {
			if (i == j){//自己指向自己不算
			   continue;
			}else if (T.nodes[j].parent == i) {
				count++;
				break;//break是因为一个结点有许多孩子,count只要加一次
                     //count统计的是非叶子结点
			}
		}
	}
	return T.n-count;
}

int main() {
	cout << "请输入树的结点的个数";
	int n = 0;
	cin >> n;
	PTree pt;
	pt.n = n;
	cout << "请输入每个结点的信息:" << endl;
	for (int i = 0; i < n; i++) {//输入结点的数据域和结点双亲在数组中的位置
		cin >> pt.nodes[i].data;//数据
		cin >> pt.nodes[i].parent;//父节点位置
	}
	int leaves=GetLeavesCount(pt);
	cout << "叶子节点数目=" << leaves << endl;
	return 0;
}

原文地址:https://www.cnblogs.com/Whgy/p/12312091.html

时间: 2024-08-04 05:25:38

《考研机试》(四)机试题精讲的相关文章

《考研机试》(二)机试题精讲

(一)题1: 解题思路:通过二维数组存取输入数据,之后通过一个函数判断是否存在'E''A''S''Y'四个字母,最后根据返回值打印difficult/easy 如何判断:传入二维数组的每一行(一行等于一个输入数据),定义2个指针,然后while循环读取 代码: #include <iostream> #include <iomanip> #include <math.h> #include <string.h> using namespace std; bo

Spark全面精讲视频_Spark2.0视频

Spark全面精讲(基于Spark2版本+含Spark调优+超多案例) 课程观看地址:http://www.xuetuwuyou.com/course/149 课程出自学途无忧网:http://www.xuetuwuyou.com/ 课程分五个阶段,共115课时! 第一阶段 Spark内核深度剖析 第00节课-课程特色和学习方式 第一节课-Spark概述(四大特性) 第二节课-Spark入门 第三节课-什么是RDD? 第四节课-spark架构 第五节课-linux环境准备(虚拟机,linux)

matlab机试试题及答案

2014年常用统计分析软件应用大赛机试试题 注意事项: 1.      请选手注意考场纪律,诚信参赛: 2.      请选手关闭所有的网络设备,一经查明即视为作弊,且不予以学分认证: 3.考试时间为60分钟,请选手合理分配: 4.请选手建立word文档把答案放入其中,并注明选手的信息(姓名-专业-学号-手机号-组号),统一以组号命名. 1.求f(x)=a*x^3+b*x^2-c*x+21的导数.(15分) 2.求方程f(x)=a*x^2-b*x+23的根(15分). 3.已知矩阵A =    

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

2014华为机试西安地区A组试题

2014华为机试西安地区A组试题 题目一.分苹果 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放. 1<=M<=10,1<=N<=10 例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法 输入 7 3 输出 8 题目分析: 这道题类似于整数划分的题目,这是很早的一道ACM的题目,主要思路就是考递归. ①当苹果数目或者篮子数目为1时候,就只有一种可能 ②当苹果数目小于篮子数目的时候,按照苹果数目来分配 ③当苹果数目大于篮子数目的时候,空一个盘子 + 先每个盘子放

计算机考研机试指南(六) ——栈

机试指南 cha 3 栈的应用 括号匹配问题 1 #include <iostream> 2 #include <stdio.h> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <math.h> 7 #include <string> 8 #include <string.h> 9 #include <std

2019浙大计算机考研机试模拟赛(2)——概念专题

题目链接   引用自晴神OJ A - 边覆盖 B - 极大独立集 C - 稳定婚姻问题 D - 笛卡尔树 没赶得上全程的比赛,就做了两道,后面两道以后有时间再补.两道都是概念题,比较基础~ 以下是题解 A - 边覆盖 Case Time Limit: 200 MS (Others) / 400 MS (Java)       Case Memory Limit: 256 MB (Others) / 512 MB (Java) Accepted: 199      Total Submission

考研机试真题(一)之排序

转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907 题目1202:排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:10071 解决:3549 题目描述: 对输入的n个数进行排序并输出. 输入: 输入的第一行包括一个整数n(1<=n<=100). 接下来的一行包括n个整数. 输出: 可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格. 每组测试数据的结果占一行. 样例输入: 4 1 4 3 2 样例输出: 1

20 考研英语题源外刊精讲赏析 1~10 期外刊原文+翻译+点评

打卡日期记录: ===========遗忘曲线记录====查词用浏览器:复习刷遍数,用电子版文件m====== 20 考研英语题源外刊精讲赏析1~10 期外刊原文+翻译+点评 01-<美国执业证照制度在阻碍竞争> 本文选自 The Economist<经济学人> 2018 年 2 月 17 日一篇题为 America should get rid ofoppressive job licensing(职业证照制度在阻碍竞争)的文章. 作者指出,美国的职业证照制度并不能保护消费者利益