牛客oj 习题11.1 找出直系亲属(前驱记录)
题目链接:https://www.nowcoder.com/practice/2c958d09d29f46798696f15ae7c9703b?tpId=40&tqId=21453&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking
思路:其实我不是很懂为什么要把这题和并查集扯上关系,直接一个前驱关系就解决的问题,用并查集是不是有点大材小用?
其中son[i]数组代表i节点的孩子。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <cctype>
#include <climits>using namespace std;const int MAXN = 30000;
const int INF = INT_MAX;int main(){
// freopen("in.txt", "r", stdin);int n, m;char son[MAXN];string str; while(~scanf("%d %d", &n, &m)){for(int i = 0; i < 27; i++){son['A' + i] = '#';}for(int i = 0; i < n; i++){cin >> str;if(isupper(str[1])) son[str[1]] = str[0];if(isupper(str[2])) son[str[2]] = str[0];}for(int i = 0; i < m; i++){cin >> str;bool flag = false;int count = 0;char tmp = str[0];while(son[tmp] != '#'){tmp = son[tmp];count++;if(tmp == str[1]){flag = true;break;}}if(!flag){count = 0;tmp = str[1];while(son[tmp] != '#'){tmp = son[tmp];count--;if(tmp == str[0]){flag = true;break;}}}if(!flag) printf("-\n");else{if(count == 1) printf("parent\n");else if(count == 2) printf("grandparent\n");else if(count >= 3){while(count > 2){printf("great-");count--;}printf("grandparent\n");}else if(count == -1) printf("child\n");else if(count == -2) printf("grandchild\n");else if(count <= -3){while(count < -2){printf("great-");count++;}printf("grandchild\n");}}}}return 0;
}
牛客oj 习题11.1 找出直系亲属(前驱记录)相关推荐
- 牛客OJ SQL后30题的解答
题目来源:https://www.nowcoder.com/ta/sql 本文挑选了牛客OJ SQL比较典型的题目,有些题目为什么没写?那些重复性的,有些题目描述就不清楚的,看了讨论区也讲不清的,就没 ...
- Java黑皮书课后题第5章:5.11(找出能被5或6整除的数,但不能同时整除)编写程序,显示从100到1000之间能被5或6整除但不能同时整除的数,每行显示10个。数字之间用一个空格字符隔开
5.11(编写程序,显示从100到1000之间能被5或6整除但不能同时整除的数,每行显示10个.数字之间用一个空格字符隔开 题目 题目概述 破题 引申:continue break与return 代码 ...
- 程序员面试金典——11.5找出字符串
程序员面试金典--11.5找出字符串 Solution1:我的答案.加强版的二分查找,嘿嘿嘿 class Finder { public:int findString(vector<string ...
- 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。
C++程序设计(第三版) 谭浩强 习题5.7 个人设计 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点). 代码块: #include <io ...
- 九度OJ 1035:找出直系亲属(二叉树)
题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...
- hdu3786 找出直系亲属 水题
题意: 找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU3786 找出直系亲属【关系闭包】
找出直系亲属 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- KY122 找出直系亲属
KY122 找出直系亲属 def cntGen(parentsDict, descendant, ascendant):if descendant not in parentsDict:return ...
- 3秒种找出电脑所有记录的帐号密码
3秒种找出电脑所有记录的帐号密码 3秒种找出电脑所有记录的帐号密码,这样的软件有点恐怖啊,在自己机上试了下,晕,全出来了 ~~ 这是一个查看密码的软件,可以自动搜索IE的自动完成密码.OE密码.Out ...
- 九度[1035]-找出直系亲属
九度[1035]-找出直系亲属 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A, ...
最新文章
- 博客园博客停止更新的通知,程序员生存定律会在CSDN发完
- 【转】解决IIS 用localhost需要用户名密码!
- 13.6 Thread类自定义线程类
- python中函数修饰符_python中的函数修饰符
- 年度布道师颁奖|盘点2020年网易智企的布道先锋们
- controller需要捕获异常吗_Spring之Controller异常处理
- 38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)
- python多线程写同一个文件_Python多线程快速写入文件,python,飞速
- 计算机硬件故障处理及维护,计算机硬件故障处理与维护方法
- charles测试学习 手机端连接电脑进行抓包分析
- php中is upload,PHP中,文件上传
- layui的treeTable插件表格树表格行单击点击事件绑定不生效
- 2021年山东省安全员C证考试及山东省安全员C证模拟考试
- 扫雷——完整版!!!!!!
- [机房测试]数字谜题
- 论文阅读笔记《Regularizing Dialogue Generation by Imitating Implicit Scenarios》
- EM与PX的对应关系
- 这篇 ElasticSearch 详细使用教程,内部分享时被老大表扬了
- 自己整理mysql语句
- 寻找最小可行化产品背后的真理