【招行】信用卡推荐用户列表 数据岗
■題目描述
现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励。规定每个客户最多可推荐两个新户且一个新户只能被推荐一次。但允许链接效应,即若客户A推荐了新户B,新户B推荐新户C,则客户同时属于A和B的推荐列表。简单起见,只考虑一个老客户A作起点推荐的情况。编程计算推荐新户数不小于n的客户列表。
■输入描述
输入的第一行为以空格分隔的两个正整数,第一个表示原始推荐列表的 个数m,第二个表示n的取值。
其后m每行均为一个以空格分隔的原始推荐列表,第一列为推荐人,后面两列为被推荐人,若该推荐人只推荐了一个新户,则第三列以*替代。 推荐人和被推荐人均以大写字母表示,不同字母代表不同的人。
■输出描述:
在同一行输出符合条件的客户列表,无顺序要求,客户间以空格分隔。 若客户列表为空,则输出None。详见祥例。
示例1
输入:
5 2
A B C
C F *
B D E
D G *
E H I
输出
A B E
解题思路:
由于链接效应,比较适合的就有链表结构,二叉树结构和递归。
Solution 1
#include <vector> #include <map> #include <string> #include <iostream> using namespace std;int OutputBigClient(map<string, pair<string, string>> &r, int n,string &head, vector<string> &output){if (head == "*") return -1;if (r.find(head) == r.end()){if (n == 0) output.push_back(head);return 0;}int ans = 2;ans += OutputBigClient(r, n, r[head].first, output);ans += OutputBigClient(r, n, r[head].second, output);if (ans >= n)output.push_back(head);return ans; } int main() {int m, n;cin >> m;cin >> n;map<string, pair<string, string>> rec_list;vector<string> output;string x, y, z;for (int i = 0; i < m; i++){cin >> x >> y >> z;rec_list[x] = make_pair(y, z);}x = "A";OutputBigClient(rec_list, n, x, output);if (!output.empty()){cout << output[0];for (int i = 1; i < output.size(); ++i){cout << " " << output[i];}cout << endl;}else{cout << "None" << endl;}//system("Pause");return 0; }
(作者:吃橘子不吐皮
链接:https://www.nowcoder.com/discuss/41237
来源:牛客网)
Solution 2
m, n= [int(i) for i in raw_input().split()]referDict = {} for _ in range(m):referList = raw_input().strip().split()if referList[0] not in referDict:referDict[referList[0]] = '*'if not referList[1] == '*':referDict[referList[1]] = referList[0]if not referList[2] == '*':referDict[referList[2]] = referList[0]referNum = {i:0 for i in referDict.keys()}for i in referDict:aa= iwhile referDict[aa] in referNum:aa = referDict[aa]referNum[aa] += 1resultList = [] for k,v in referNum.iteritems():if v>=n:resultList.append(k)if len(resultList)==0:print "None" else:print " ".join(resultList)
(作者:呵呵了呀 链接:https://www.nowcoder.com/discuss/41134 来源:牛客网)
转载于:https://www.cnblogs.com/Atanisi/p/7524863.html
【招行】信用卡推荐用户列表 数据岗相关推荐
- 【招行笔试】信用卡推荐用户列表 数据岗01
■題目描述 现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励.规定每个客户最多可推荐两个新户且一个新户只能被推荐一次.但允许链接效应,即若客户A推荐了新户B,新户B推荐 ...
- 管理员信息管理之获取管理员用户列表数据
管理员信息管理 在系统管理中我们需要完成管理员表的增删改查,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取管理员用户列表数据 接口分析 请求方式: GET /meiduo ...
- 前端学习(1890)vue之电商管理系统电商系统之绘获取用户列表数据
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- 招行数据岗笔试题- 信用卡推荐客户列表
空间限制:32768K 现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励.规定每个客户最多可推荐两个新户且一个新户只能被推荐一次.但允许链接效应,即若客户A推荐了新户B ...
- 【招商银行数据方向笔试题】—— 信用卡推荐客户列表
题目: 现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励.规定每个客户最多可推荐两个新户且一个新户只能被推荐一次.但允许链接效应,即若客户A推荐了新户B,新户B推荐新户 ...
- Django----将后端数据展示在前端页面(展示用户列表及详情页)
需求描述: 如下图,将后台数据库中的用户列表数据展示出来,点击某用户后,进入信息详情页面 解决方案: 涉及知识点:模板语言 django除了可以渲染html语言,还支持模板语言: {% for use ...
- 阿里巴巴计算平台资深技术专家“一浪”对大数据领域近几年的技术趋势和变化的看法【强烈推荐数据岗细细品!】
导读:计算和存储分离是近几年大数据架构领域颇受关注的一个技术风向.在对刚刚过去的 2019 天猫双 11 技术进行总结时,阿里巴巴 CTO 行癫也特别提到了阿里在计算存储分离上的进展.大数据最初兴起之 ...
- 推荐算法--利用用户行为数据(02)
文章目录 目录 1.什么是用户行为数据? 1.1用户行为分类 2.用户行为数据如何使用? 2.1 用户活跃度和物品流行度的分布 2.2 用户活跃度和物品流行度的关系 2.3 协同过滤算法 3.实验设计 ...
- 推荐算法(3):利用用户标签数据
推荐算法(1):协同过滤总结 推荐算法(2):基于内容的推荐 推荐算法(3):利用用户标签数据 推荐算法(4)利用上下文信息 推荐算法(5)利用社交网络数据 推荐算法(6) 实例 推荐算法(7)缺失的 ...
最新文章
- 【每日算法】C语言8大经典排序算法(2)
- 【渝粤教育】 国家开放大学2020年春季 1079高等代数专题研究 参考试题
- Linux系统查看开放的端口、开启指定端口、关闭指定端口和查看及删除定时任务
- [读书笔记]iOS 7 UI设计 对比度
- 【协同任务】基于matlab人工蜂群算法多无人机作业路径规划【含Matlab源码 1235期】
- 常用的第三方ui框架
- 群智能优化算法学习规划
- Jmeter刷csdn博客访问量
- 【图片新闻】俄罗斯的新型高超音速导弹每秒飞行近两英里,“锆石Zircon”很可能是不可阻挡的尖端防空武器
- python棋类项目规划一——五子棋游戏策划书——项目一
- 幸福婚庆策划网管理系统
- 异常:java.lang.LinkageError: loader constraint violation: when resolving interface method “javax.servl
- 图形化编程与python的区别_计算机编程启蒙为什么要选图形化编程和python
- pyqt 多窗口之间的相互调用方法
- centos7软件安装更新
- python 导入模型_scikit-learn系列之如何存储和导入机器学习模型
- 程序员都看不懂的代码
- python生成图形验证码_python生成图片验证码
- 【数理逻辑与集合论】第一章 命题逻辑
- 中小学数学卷子自动生成程序——结队编程队友互相评价