华科研究生复试机试题代码堆积供以后参考
#include "stdafx.h"
#include <cstdio>
#include <cstring>
using namespace std;#define MaxSize 50
char str[MaxSize];int main()
{// 测试// 正常情况:|hello world a. // 边界情况:|a.// 异常情况(不考虑多个'.'和'.'与最后一个单词离开)// 扩展性良好的思路:先根据空格‘分割’字符串,然后数每个char[]中的字符数量并打印// 一般思路:边识别边统计字符while (fgets(str,MaxSize,stdin)){bool IsInWord = false; //判断是否在单词里int count = 0; //统计每个单词的字符数int length = strlen(str);for (int i = 0;i < length;++i){// 当在单词中碰到空格、字符或'.'的情况时if (IsInWord){if (' ' == str[i]) // 空格{printf("%d ", count);IsInWord = true;count = 0;}else if ('.' == str[i]) // 结束(但无法确保只有'.'){printf("%d\n", count);}else // 字符{count++;}}else // 不在单词中{// 遇到字符,即开始一个单词if (str[i] != ' ') // 遇到字符{count++;IsInWord = true;}}}}return 0;
}
// BST.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
//#include "stdio.h"struct BST
{BST* leftChild;BST* rightChild;BST* parent;int data;
};// BST插入操作:root为BST的根节点,data要插入的数值,node为新插入的节点并返回
bool insert(BST* root, int data, BST** node){// 0.处理异常情况if (root == NULL){return false;}// 1.循环找到插入位置BST* tmp = root;BST* parent = root;bool isRight = true;while (tmp){parent = tmp; //记录下父节点// 比较data大小决定往哪走if (data > tmp->data) //往右走{tmp = tmp->rightChild;isRight = true;}else //不然,向左走{tmp = tmp->leftChild;isRight = false;}}// 跳出来,说明到插入位置了,开始插入节点BST* insertNode = new BST;insertNode->data = data;insertNode->rightChild = insertNode->leftChild = NULL;insertNode->parent = parent;if (isRight) //插入右边parent->rightChild = insertNode;else //插入左边parent->leftChild = insertNode;*node = insertNode; // 返回该节点return true;
}int main()
{//测试//正常情况//边界情况:一个节点//异常情况:null指针int NodeNumbers;BST* root=NULL;int data;while (scanf("%d", &NodeNumbers)){// 输入数字for (int i = 0;i < NodeNumbers;++i){scanf("%d", &data);// 处理第一个节点if (i == 0){root = new BST;root->data = data;root->leftChild = root->rightChild = root->parent= NULL;printf("%d\n", -1);}else{BST* node=NULL;if (insert(root, data, &node)){//插入成功后,打印父亲节点的数值printf("%d\n", node->parent->data);}}}// 存在内存泄漏,没有delete掉那些new 出来的内存,考试中为了速度不用考虑}return 0;
}
// InversionOfMatrix.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;#define MaxSize 50bool inverse(int matrix[][MaxSize], int dimension)
{// 0.异常情况处理if (matrix == NULL || dimension <= 0)return false;// 1.核心部分for(int i=1;i<dimension;++i)for (int j = 0;j < i;++j){swap(matrix[i][j], matrix[j][i]);}return true;
}int matrix[MaxSize][MaxSize];int main()
{// 测试// 正常情况// 异常情况// 边界情况:1*1int dimension;while (scanf("%d", &dimension)){for (int i = 0;i < dimension;++i)for (int j = 0;j < dimension;++j)scanf("%d", &matrix[i][j]);// 转置if (inverse(matrix, dimension)){// 打印结果for (int i = 0;i<dimension;++i)for (int j = 0;j < dimension;++j){if (j == dimension - 1)printf("%d\n", matrix[i][j]);elseprintf("%d ", matrix[i][j]);}}}return 0;
}
#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;#define MaxSize 50
char result[MaxSize][MaxSize];
char str[MaxSize];
// 一个简单的splitString函数,依据char分割由char紧密连接的string。
// 如:255.255.255.255中的'.' 或者 hello world you 中的空格。
bool splitString(char str[], int length, char Reg, char result[][MaxSize])
{// 0.异常情况处理if (str == NULL || result == NULL||length<=0)return false;// 1.核心部分char* source = str;int count = 0,num=0; // count计数,num表示在result中存放字符串的顺序for (int i = 0;i < length;++i){// 根据当前是不是分隔符来划分字符串if (str[i] == Reg||i==length-1){// 把前面的字符串复制到result中memcpy(result[num], source, count);result[num][count+1] = '\0';// count重新计数,num\source移位source += count+1;count = 0;num++;}else{// count计数count++;}}return true;
}bool IsRight(char str[], int length)
{// 0.异常情况处理if (str == NULL || length <= 0)return false;// 将字符串转换成数值,进行比较 int data = atoi(str);if (data >= 0 && data <= 255)return true;elsereturn false;
}int main()
{// 测试// 正常情况 256.2.1.1// 边界情况 // 异常情况while (fgets(str, MaxSize, stdin)){int length = strlen(str);bool isRight = true;if (splitString(str, length, '.', result)){for (int i = 0;i < 4;i++){length = strlen(result[i]);if (!IsRight(result[i], length)){isRight = false;break;}}}if(isRight)printf("%s\n", "Yes!");elseprintf("%s\n", "No!");}return 0;
}
在这里插入代码片
// sort.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
// 快速排序
// 一次分配过程
void Swap(int* a, int *b)
{int c;c = *b;*b = *a;*a = c;
}int Partition(int* data, int start, int end)
{// 0.处理异常情况/*if (data == NULL || start > end)return ;*/// 1.核心部分/and(time(NULL)); //种子//int index = rand() % (end - start) + start;//Swap(&data[index], &data[start]);int i = start, j = end, tmp = data[start];while (i < j){while (i < j&&tmp < data[j]) j--;if (i < j){data[i]=data[j];i++;}while (i<j&&tmp>data[i]) i++;if (i < j){data[j] = data[i];j--;}}data[i] = tmp;return i;
}void qsort(int* data, int start, int end)
{// 0.处理异常情况if (data == NULL || start > end)return;// 1.核心部分int index = Partition(data, start, end);if (index > start)qsort(data, start, index-1);if (index < end)qsort(data, index+1, end);
}// 归并排序
int data[100];
int main()
{// 测试// 正常情况// 边界情况// 异常情况int n;while (scanf("%d", &n)){for (int i = 0;i < n;i++)scanf("%d", &data[i]);qsort(data, 0, n - 1);for (int i = 0;i < n;i++){if (i == n - 1)printf("%d\n", data[i]);elseprintf("%d ", data[i]);}}return 0;
}
在这里插入代码片
初学者 2020/5/12 9:08:01
// sort.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
// 快速排序
// 一次分配过程
void Swap(int* a, int *b)
{int c;c = *b;*b = *a;*a = c;
}int Partition(int* data, int start, int end)
{// 0.处理异常情况/*if (data == NULL || start > end)return ;*/// 1.核心部分/and(time(NULL)); //种子//int index = rand() % (end - start) + start;//Swap(&data[index], &data[start]);int i = start, j = end, tmp = data[start];while (i < j){while (i < j&&tmp < data[j]) j--;if (i < j){data[i]=data[j];i++;}while (i<j&&tmp>data[i]) i++;if (i < j){data[j] = data[i];j--;}}data[i] = tmp;return i;
}void qsort(int* data, int start, int end)
{// 0.处理异常情况if (data == NULL || start > end)return;// 1.核心部分int index = Partition(data, start, end);if (index > start)qsort(data, start, index-1);if (index < end)qsort(data, index+1, end);
}// 归并排序
int data[100];
int main()
{// 测试// 正常情况// 边界情况// 异常情况int n;while (scanf("%d", &n)){for (int i = 0;i < n;i++)scanf("%d", &data[i]);qsort(data, 0, n - 1);for (int i = 0;i < n;i++){if (i == n - 1)printf("%d\n", data[i]);elseprintf("%d ", data[i]);}}return 0;
}初学者 2020/5/12 9:08:39
// SpecialSort.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"void Swap(int* a, int* b)
{int c;c = *b;*b = *a;*a = c;
}// 堆排序
void adjustHeap(int *data, int node, int length) //调整堆
{int lchild = 2 * node + 1; //i的左孩子节点序号 int rchild = 2 * node + 2; //i的右孩子节点序号 int parent = node;while (lchild <= length-1) //左孩子在堆里{if (rchild <= length-1) //若右孩子也在堆里{if (data[rchild] > data[lchild]) //左孩子比右孩子小{// 右孩子与父亲节点比较if (data[parent] < data[rchild]){Swap(&data[parent], &data[rchild]);parent = rchild;lchild = parent * 2 + 1;rchild = parent * 2 + 2;continue;}elsebreak;}}if (data[lchild] > data[parent]) //左孩子大于父亲节点{Swap(&data[lchild], &data[parent]);parent = lchild;lchild = parent * 2 + 1;rchild = parent * 2 + 2;}elsebreak;}
}void buildHeap(int *data, int length) //建堆
{for (int i = length / 2 - 1;i >= 0;i--) //非叶节点最大序号值为length/2 - 1 {adjustHeap(data, i, length);}
}void HeapSort(int *data, int length) //堆排序
{// 0.异常情况if (data == NULL || length <= 0)return;int i;// 建堆buildHeap(data, length);// 调整堆顶元素,并进行堆调整for (i = length-1;i >= 1;i--){Swap(&data[0], &data[i]); //交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面 adjustHeap(data, 0, i); //重新调整堆顶节点成为大顶堆}
}int data[1000];int main()
{// 测试// 正常情况// 边界情况// 异常情况int n;while (scanf("%d", &n)){for (int i = 0;i < n;i++)scanf("%d", &data[i]);HeapSort(data, n); //堆排序printf("%d\n", data[n - 1]);for (int i = 0;i < n-1;i++){if (i == n - 2){ printf("%d\n", data[i]);break;}printf("%d ", data[i]);}}return 0;
}
华科研究生复试机试题代码堆积供以后参考相关推荐
- 中南大学2019研究生复试机试题
中南大学2019研究生复试机试题 机试题共六题 1.选球问题 题目描述 输入 输出 样例输入 样例输出 解决代码 2.模拟出入栈游戏 题目描述 输入 输出 样例输入 样例输出 解决代码 3.爬楼梯游戏 ...
- 【华科考研复试机试题】华中科技大学考研复试机试题解题报告
题目来源:牛客网华科考研复试题 以下代码均在牛客网提交通过.(编译器类型为G++5.4) 若以下题解思路有考虑欠缺处,望读者指正. 1.1. 矩阵转置 1.1.1. 题目描述 输入一个N*N的矩阵,将 ...
- 13-19年复旦大学计算机学院研究生复试机试题
(不保证代码完全正确,自己敲的可能存在不完善的地方,请各位大佬发现后指出,谢谢!) 暂时结束. 试题列表 2019上机题 2018上机题 2017上机题 2016上机题 2015上机题 2014上机题 ...
- 1028: 安全路径(2014年中南大学研究生复试机试题 )
1028: 安全路径 时间限制: 1 Sec 内存限制: 128 MB 提交: 228 解决: 96 [提交][状态][讨论版] 题目描述 卫斯理小说经常提及外星人,比如蓝血人. 在土星星球有很多 ...
- 2018年 中南大学研究生复试机试题(1025~ 1028)
目录: A:最短距离 B:a + b问题 C:逃离迷宫 D:可乐 A:最短距离 http://39.106.164.46/problem.php?id=1025 思路: 设小王的坐标为(x1 + u1 ...
- 2014年中南大学研究生复试机试题(字符串、基础dp、最短路)
A.B.C题很简单. D.最大连续子序列 思路: 求最大连续子序列的值以及左右端点. 那么我们记录连续和值为s,最值为maxx,只有maxx改变时才改变左右端点,考虑记录l,r,即当前的区间端点. 那 ...
- 1028-可乐(中南大学18年研究生复试机试题)
题目描述 猪年快乐!在这个快乐的日子里我们当然要去超市买可乐喝啦! 现在超市有n种可乐,第 i 种可乐的价格为C[i] ,体积为 2i-1 毫升,每种可乐都是无限供应的 ,现在你想买至少 L毫升的可乐 ...
- 2016年中南大学研究生复试机试题(1015~1019)
目录: **A:第几天 B:加油站 C:序列求平均 D:士兵排阵 ** A:第几天 http://39.106.164.46/problem.php?id=1015 思路: 分闰年和非闰年讨论即可. ...
- 2018年华科考研复试机试题记录
(40')1.输入一句英文(含空格),求 (1)统计英文单词个数(10') (2)统计字符个数(10') (3)查找出现次数最多的字符(可能不止一个),要求全部给出并输出出现的次数(20') 以上输出 ...
最新文章
- [开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
- 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
- 用C/C++开发《Photoshop》图像处理软件
- ubuntu18下vnpy1.9.2的安装
- 利用Python操作Excel实现自动化办公
- React --获取服务器数据的两种方式(Axios和FetchJsonp)
- selenium元素定位——下拉选择框
- 【金蝶K3】新/老单据转换流程相关表说明(单据转换流程下推老单,钩稽关系可为严格控制)
- Python爬虫——利用新浪微盘下载周杰伦的歌曲(共190首)
- python 全角字符和半角字符切换
- 未来十大最热门职业,可能消失的职业
- 迁移学习具体场景与方法
- 两阶段市场投标策略。 电力市场程序。 日前日内竞价 提出了日前电力市场和实时电力市场下充电站的投标策略
- Learning to rank 小结
- winpe修复计算机无法启动,PE修复系统启动故障的详细教程
- 微信小程序毕业设计 基于微信校园失物招领小程序系统开题报告
- 一个企业固定资产折旧案例
- 用系统磁盘管理修复SD卡或U盘显示为RAW问题
- 消费者协调器和组协调器(十二)
- 5款良心工具,专治各种流氓顽固软件!
热门文章
- 关于arcgis发布wfs问题
- ListView属性设置
- hive 的udf 函数使用
- Windows Server 2016软件定义存储:Storage Spaces Direct介绍
- 【翻译自mos文章】OGG replicat 进程使用的 TCP port
- Exchange 发送方式(Send As)和代表发送(Send on behalf)的区别
- MVC 自定义IModelBinder实现json参数转Dictionarystring, string
- SpringMVC下的基本配置
- sqlserver2008中如何用右键可视化的设置外键
- mingw msys 编译 libzip