均分纸牌(playcard)

本文介绍了一种解决均分纸牌问题的方法,通过贪心算法,从最左侧开始移动纸牌,每次将多的纸牌移到相邻的较少数目的堆上,以最少的移动次数实现所有堆纸牌数相同。详细分析了问题和解题思路,并给出了代码实现。
摘要由CSDN通过智能技术生成

题目描述

有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。 
移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。 
现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。 

例如 N=4,4 堆纸牌数分别为:  ① 9 ② 8 ③ 17 ④ 6

移动3次可达到目的:

从 ③ 取 4 张牌

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
扑克牌对弈 编程考试试题 题目: 4 个人甲乙丙丁在一起玩一副扑克纸牌,每张纸牌按照数字计分,不同花色的相同数字的纸牌分值一样。 其中 1-10 各种花色的纸牌分别为 1-10,J、Q、K 分别被记为 11,12,13,大王和小王分别记为 20。四种花 色(方片,梅花、红桃、黑桃)分别被记为 A、B、C、D。如红桃 K 表示为 13C,分值为 13;方片 5 表示 为 5A,分值为 5。大王表示为 20K,分值为 20,小王表示为 20Q,分值为 20,54 张纸牌叠在一起倒扣在 桌子上。 游戏过程如下: 1. 洗牌:54 张纸牌随机顺序组合。 2. 4 人排序:随机产生 4 人的拿牌顺序,出牌顺序与拿牌顺序相同。第一个人拿牌,即第一个人出牌。 3. 4 人排序后,两两组队,按照顺序第 1 人和第 3 人组成 1 队,第 2 人和第 4 人组成 1 对。 4. 分牌:按拿牌顺序每人轮流拿牌,每人拿 13 张纸牌,最后两张纸牌留在桌面。 5. 信息:每个人不知道其他人的牌,也不知道留在桌面上的牌,可以获得的信息包括自己持有的牌和 4 个人出过的牌。队内的成员可以在每一轮沟通出牌的策略。 6. 出牌:从第一个拿牌的人开始出牌(可以选择最大获胜机会的策略),每一轮 4 人出牌,然后比大 小,拥有牌最大的人获取当前轮次的 4 张牌。出过的牌后面不可以再出。大小判定规则,纸牌分值 (大) > 纸牌分值(小),相同纸牌分值,按照黑桃>红桃>梅花>方片的顺序判定大小。 7. 判定胜负:每个人手中的牌的分值总和为每个人的得分,每队的得分为两个人得分的和,得分最大的 队伍者获胜,如果两队得分相同,则平局。 编程要求: 8. 代码实现要考虑到扩展性。要在牌的分值,大小比较规则发生变化时,代码能够很容易地扩展和支 持。 请使用C#语言实现
07-17

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值