热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

13.均分纸牌

【问题描述】有N堆纸牌,各堆编号分别为1,2,…,N。每堆上有若干张纸牌,但所有纸牌总数必为N的整数倍。可以在任一堆上取若

【问题描述】

有 N 堆纸牌,各堆编号分别为 1,2,…, N。每堆上有若干张纸牌,但所有纸牌总数必为 N 的整数倍。可以在任一堆上取若干张纸牌,然后按如下规则进行移动:
在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。
现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。
例如 N=4,4 堆纸牌数分别为:  ① 9 ② 8 ③ 17 ④ 6
移动3次可达到目的:

  1. 从 ③ 取 4 张牌放到 ④(9 8 13 10)

  2. 从 ③ 取 3 张牌放到 ②(9 11 10 10)

  3. 从 ② 取 1 张牌放到 ①(10 10 10 10)

【输入文件】

从当前目录下的card.in文件中取得输入。输入文件格式:
第一行为一个整数N&#xff08;N 堆纸牌&#xff0c;1 <&#61; N <&#61; 100&#xff09;&#xff1b;
第二行为N个整数A1 A2 … An &#xff08;N 堆纸牌&#xff0c;每堆纸牌初始数&#xff0c;l<&#61; Ai <&#61;10000&#xff09;。
【输出文件】

输出文件card.out只有一行&#xff0c;包含一个整数&#xff0c;表示最少移动次数。
【输入样例】

4
9 8 17 6
【输出样例】

3
【样例说明】

4堆纸牌最少移动3次使每堆的纸牌数一样多。

f &#61; open(&#39;card.in&#39;)
line &#61; f.readline()
list_line &#61; [line] # 储存读入的文件&#xff0c;只读入前两行
m &#61; 2
while m > 1:line &#61; f.readline()list_line.append(line)m -&#61; 1
n &#61; list_line[0].replace(&#39;\n&#39;, &#39;&#39;) # 获取N
list_card &#61; list_line[1].split() # 获取堆
sm &#61; 0
list_cards &#61; []
for i in list_card: # 求和sm &#43;&#61; int(i)list_cards.append(int(i)) # int值储存
average &#61; int(sm / int(n)) # 获取平均数
t &#61; 0
count &#61; 0
for i in range(int(n)): # 遍历每个牌堆# 如果这个牌堆收到移动过来的牌数后不等于平均数&#xff0c;就需要移动if list_cards[i] &#43; t !&#61; average:# 计算移动的牌数&#xff0c;或正或负t &#61; list_cards[i] &#43; t - average# 计数count &#43;&#61; 1else:t &#61; 0 # 不用移动就是移动0张且次数不变
g &#61; open(&#39;card.out&#39;, &#39;a&#39;)
g.seek(0) # 定位头位置
g.truncate() # 从头位置清空文件内容
g.write(str(count)) # 写入文件
f.close()
g.close()


推荐阅读
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了一个编程问题,要求求解一个给定n阶方阵的鞍点个数。通过输入格式的描述,可以了解到输入的是一个n阶方阵,每个元素都是整数。通过输出格式的描述,可以了解到输出的是鞍点的个数。通过题目集全集传送门,可以了解到提供了两个函数is_line_max和is_rank_min,用于判断一个元素是否为鞍点。本文还提供了三个样例,分别展示了不同情况下的输入和输出。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 本文介绍了一个Python函数same_set,用于判断两个相等长度的数组是否包含相同的元素。函数会忽略元素的顺序和重复次数,如果两个数组包含相同的元素,则返回1,否则返回0。文章还提供了函数的具体实现代码和样例输入输出。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有