2009年2月1日星期日

翻硬币[穷举法]

翻硬币

考虑有一个翻硬币的游戏。有N(N<=10000)行硬币,每行有9个硬币,排成一个N*9的方阵。有的硬币正面朝上,有的硬币反面朝上。我们每次可以把一整行或一整列的硬币翻过来,请问怎么翻,使得正面朝上的硬币尽量多。

解题思路
用二维数组模拟硬币方阵,或者用两个一行和一列的一维数组统计本行或本列正面向上的硬币个数,压缩空间占用。分别按行和列扫描,当正面朝上的个数小于本行或列总数的一半时,作翻硬币处理,如果不满足这个条件则不做处理。任意一行或列被处理后,需要重新统计正面朝上的硬币个数。直到所有行或列都不满足处理的条件,程序结束。

还应进一步考虑行或列处理后对于其他行列的影响,达到最大限度的使正面朝上~~

没有评论:

发表评论