解题思路:
引用自作者:胜利归来 https://blog.dotcpp.com/wangkaixuan01/
对每一组数据建立一个大小为10*5的数组,这里记为A
A[i][0]表示出现在图中最靠上的数字i的横坐标
A[i][1]表示出现在图中最靠下的数字i的横坐标
A[i][2]表示出现在图中最靠左的数字i的横坐标
A[i][3]表示出现在图中最靠右的数字i的横坐标
A[i][4]数字i在图中出现的次数
如果玩具摆放满足要求,那么所有在图中出现过的数字i满足
(A[i][1]-A[i][0]+1)*(A[i][3]-A[i][2]+1)= A[i][4]
注意事项:
参考代码:
from cmath import inf k = int(input().strip()) for t in range(k): A = [[inf,0,inf,0,0] for i in range(10)] #建立标记数组A n,m = map(int,input().strip().split()) for x in range(n): B = list(map(int,list(input().strip()))) for y in range(m): num = B[y] A[num][4] = A[num][4]+1 #更新数字num出现的次数 if x < A[num][0]: #更新数字num最靠上的值 A[num][0] = x if x > A[num][1]: #更新数字num最靠下的值 A[num][1] = x if y < A[num][2]: #更新数字num最靠左的值 A[num][2] = y if y > A[num][3]: #更新数字num最靠右的值 A[num][3] = y flag = 1 #判断结果 for i in range(10): if A[i][4]: if (A[i][1]-A[i][0]+1)*(A[i][3]-A[i][2]+1) != A[i][4]: flag = 0 break if flag: print('YES') else: print('NO')
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复