2017京东实习生招聘编程题——站队抓小偷(python)
2017-04-09 20:36
731 查看
站队(京东2017实习生真题) 题目描述有一条很长的队伍,队伍里面一共有n个人。所有的人分为三类:警察,小偷和普通人。将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值。每一个警察有一个能力值x,表示他能够监视与他距离不超过x的所有人,小偷被警察发现当且仅当他被一个或多个警察监视到。你知道在整条队伍中,一共有多少个小偷会被警察发现吗?
输入 输入有两行,第一行一个数n(1<=n<=100000),接下来一行有一个长度为n的字符串,依次表示队伍中的每一个人。如果某一位是1-9的某个数字x,表示这一位是一个能力值为x的警察;如果某一位是字符X表示这一位是小偷;如果某一位是字符#表示这是一个普通人。输入保证不会出现其它字符。 | 样例输入 9 X1X#2X#XX |
输出 输出一个数,整条队伍中被警察发现的小偷总数。 | 样例输出 3 |
# -*- coding: utf-8 -*- n=raw_input() n=int(n) sque=raw_input() person_type_dict={} police_distance_dict={} for i in range(1,n+1): p=sque[i-1] if p=='X': person_type_dict[i]='steal' elif p=='#': person_type_dict[i]='ordinary' else: person_type_dict[i]='police' police_distance_dict[i]=int(p) goal=[] for k in police_distance_dict.keys(): dis=police_distance_dict[k] min_num=max(1,k-dis) max_num=min(k+dis,n) pra=[] for j in range(min_num,k)+range(k+1,max_num+1): if person_type_dict[j]=='steal': pra.append(j) goal=goal+pra goal=set(goal) print len(goal)
相关文章推荐
- 2017京东实习生招聘编程题——买糖果(python)
- 京东2017实习生招聘编程题——终结者 python
- 京东2017实习生招聘在线笔试编程题题解
- 京东2017实习生招聘在线笔试编程题
- 京东2017实习生招聘——在线笔试编程题总结
- 京东2017实习生招聘在线笔试编程题
- 2017网易游戏雷火盘古实习生招聘笔试真题:最大和 [python]
- 2017京东春招C/C++编程题(1)——站队
- 京东2017实习生招聘试题 单例模式、抽象工厂、Prototype都属于
- 站队(京东2017实习生真题)
- 腾讯2017暑假实习生招聘笔试编程题(2)
- 京东2017实习生招聘试题 方法调用
- 网易2017暑期实习生招聘笔试编程题之小易背单词
- 京东2017实习生笔试编程题-终结者C
- 2017阿里实习生招聘编程题之墓室
- 腾讯2017暑期实习生编程题:有趣的数字 [python]
- 2017阿里巴巴实习生招聘编程题
- 京东2017校园招聘Android研发工程师编程题(二):幸运数
- 2017网易游戏雷火盘古实习生招聘笔试真题:推箱子 [python]
- 站队(京东2017实习生真题)