当前位置:网站首页>7-11 机工士姆斯塔迪奥(PTA程序设计)
7-11 机工士姆斯塔迪奥(PTA程序设计)
2022-07-06 09:22:00 【编程林黛玉】
在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。
你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。
给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。
输入格式:
输入第一行是三个整数 N,M,Q (1≤N×M≤105,0≤Q≤1000),表示地图为 N 行 M 列大小以及选择的行/列数量。
接下来 Q 行,每行两个数 Ti,Ci,其中 Ti=0 表示 BOSS 选择的是一整行,Ti=1 表示选择的是一整列,Ci 为选择的行号/列号。行和列的编号均从 1 开始。
输出格式:
输出一个数,表示安全格子的数量。
输入样例:
5 5 3
0 2
0 4
1 3
输出样例:
12
代码(Python):
n,m,q=map(int,input().split()) #输入第一行是三个整数 N,M,Q ,表示地图为 N 行 M 列大小以及选择的行/列数量。
list1=[] #存放地图
list2=[] #存放要删除的数据的行或列数,即输入样例中除第一行以外的数
for i in range(n): #初始化二维列表,即构建地图,使其值全部为1
h=[] #这里其实相当于list1中有n个元素,每个元素里又有m个元素,即构成n*m的地图
for j in range(m):
h.append(1)
list1.append(h)
for i in range(q): #二维数组的输入,即将输入样例中除第一行以外的数以二维列表的形式存储
s=input()
list2.append([int(n) for n in s.split()]) #注意里面是方括号
for i in range(q): #开始删除
x=list2[i][1]-1 #看要删除哪一行或列,因为题中的行或列都是从1开始的,而列表中的是从0开始的,所以要减1
if list2[i][0]==0: #删除一整行
for j in range(m): #删除行的时候看有几列,m列
list1[x][j]=0 #用置0表示删除
if list2[i][0]==1: #删除一整列
for j in range(n): #删除列的时候看有几行,n行
list1[j][x]=0 #用置0表示删除
count=0 #安全格子的数量
for i in range(n): #遍历地图,看有几个1,即有几个安全格子
for j in range(m):
if list1[i][j]==1:
count+=1
print(count) #输出安全格子的数量
我在一开始看到这道题的时候以为它很难,因为看上去很复杂。但还是上手尝试了一下,发现一点也不难,就是最基础的数学知识,也没有很难的算法。所以,当大家遇到一道看上去很难的题的时候,也不要放弃,要尝试入手去做,去分析,说不定它没有很难,又或许它确实有点难度,可是不尝试怎么知道自己会不会呢,万一自己做出来了呢?所以不要给自己设限,要大胆额去尝试,去挑战。
上面的程序给出了比较详细的注释,以便新手小白参考。程序的思路设计或者代码实现并不是最优的,欢迎各位大佬指正错误或者给出更优质的思路。
我是一只想成为鲲鹏的菜鸟,大家的鼓励是我前进的动力,欢迎大家点赞收藏评论哦!
边栏推荐
- [the Nine Yang Manual] 2020 Fudan University Applied Statistics real problem + analysis
- Mortal immortal cultivation pointer-1
- 简单理解ES6的Promise
- The difference between abstract classes and interfaces
- 3.输入和输出函数(printf、scanf、getchar和putchar)
- Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
- 5. Download and use of MSDN
- 仿牛客技术博客项目常见问题及解答(二)
- [中国近代史] 第五章测验
- The difference between cookies and sessions
猜你喜欢
ABA问题遇到过吗,详细说以下,如何避免ABA问题
[hand tearing code] single case mode and producer / consumer mode
FAQs and answers to the imitation Niuke technology blog project (III)
MySQL lock summary (comprehensive and concise + graphic explanation)
SRC挖掘思路及方法
fianl、finally、finalize三者的区别
The difference between cookies and sessions
【手撕代码】单例模式及生产者/消费者模式
7. Relationship between array, pointer and array
2. C language matrix multiplication
随机推荐
MATLAB打开.m文件乱码解决办法
4. Branch statements and loop statements
[the Nine Yang Manual] 2021 Fudan University Applied Statistics real problem + analysis
About the parental delegation mechanism and the process of class loading
[the Nine Yang Manual] 2018 Fudan University Applied Statistics real problem + analysis
[during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission
FAQs and answers to the imitation Niuke technology blog project (II)
Leetcode.3 无重复字符的最长子串——超过100%的解法
[中国近代史] 第九章测验
2.初识C语言(2)
C语言入门指南
最新坦克大战2022-全程开发笔记-1
杂谈0516
SRC挖掘思路及方法
抽象类和接口的区别
Implementation principle of automatic capacity expansion mechanism of ArrayList
Custom RPC project - frequently asked questions and explanations (Registration Center)
【九阳神功】2018复旦大学应用统计真题+解析
3.C语言用代数余子式计算行列式
[面試時]——我如何講清楚TCP實現可靠傳輸的機制