重叠次数

解决思路:
1.求两个列表的交集
2.遍历交集列表中的每一个元素,min(元素在列表1中的次数,元素在列表2次数),就是此元素的重叠次数
3.返回元素,最大重叠次数

def max_overlap(list1,list2):
    overlap = set(list1).intersection(list2)
    ox = [(x,min(list1.count(x),list2.count(x)))  for x in overlap]
    return max(ox,key=lambda x: x[1])

print(max_overlap([1, 2, 2, 2, 3, 3], [2, 2, 3, 2, 2, 3]))
1)本游戏包括蛇和食物两个对象。蛇由若干节蛇身组成,每节蛇身包含蛇身横坐 标、蛇身纵坐标、当前蛇身指向前一节蛇身的指针、当前蛇身指向后--节蛇身的指针 等属性,因此定义为-一个结构体,表示如下: struct Snake int x; int y; struct Snake *pre; //指向 当前蛇身的前一-节蛇身struct Snake *next; //指向当前蛇身的后一节蛇身 2)食物包含食物横坐标、食物纵坐标、食物的表示等属性,因此也定义为-一个结构体,表示如下: struct Food intx; int y; charc; // 食物的字符表示 3)主要功能实现 (1)绘制图形:绘制蛇、食物、围墙 void drawPicture(head, &food); //绘制蛇、 食物、围墙 (2)蛇吃到食物:表示蛇头碰到食物,即蛇头的横、纵坐标和食物的横、纵坐标重合。int isSnakeEatMeetFood(Snake * snake , Food *food); //蛇是否吃到食物 (3)蛇身增长:即动态生成一个蛇身结构体,并将之添加到当前蛇尾的后面,建立和当前蛇尾的关联,新添加的蛇身成为新的蛇尾。 Snake * snakeGrow(Snake * head);//蛇身增加一节 (4)随机生成食物:利用结构体指针对结构体成员赋值。 void createFood(Food * food);//生成食物 (5)利用结构体指针操作,判断食物坐标和蛇身坐标是否重叠,如果重叠,需要重新随机生成食物。相应功能写入如下两个函数: int avoidOverlap(Snake *head, Food *food); //如果生成 食物和蛇重叠次数超过阈值,则直接按蛇移动方向设置食物位置 void setFoodLocation(Food *food, Snake * head, int numOverlap, char c);//按蛇移动方向设置食物位置 (6)根据围墙坐标范围和蛇移动方向,调整蛇身和食物的坐标。相应功能写入如下两个函数: void setFoodLocation(Food *food, Snake * head, int numOverlap, char C);//void snakeMove(Snake*head, Snake * rear, char c); //处理蛇的移动 (7)利用蛇的头和尾的结构体指针操作蛇朝向头方向的移动以及对蛇头坐标的控制,防止其移动越界。相应功能写入如下函数: void snakeMove(Snake*head, Snake * rear, char c); //处理蛇的 移动
最新发布
03-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值