sgu 101. Domino

来源:互联网 发布:网络诈骗手段有哪些 编辑:程序博客网 时间:2024/05/01 03:02

难度: 3

分析: 易见,如果多米诺牌能串起来,那么中间的点数都成对出现。所以最多只有两端的点数出现次数为奇数。是不是只有两个点数出现

奇数次,就一定可以串起来呢?也不一定。比如(1,1) (2,2)就不能连到一起。如果两个多米诺牌有共同点数,就在它们之间划一条线,显然

构成的图必须连通才可能串起来。下面证明,如果这样的图连通并且最多只有两个点数出现奇数次,那么可以按照要求串起来。

    对牌的个数N使用归纳法。

    (1) 如果n=1,2,显然。

    (2) 如果n=k时结论成立,那么n=k+1时,找到一张牌,使得剩下的牌构成的图连通,显然这样一张牌一定存在。

    如果剩下的k张牌最多只有两个点数出现奇数次,那么可以将它们串起来。对第k+1张牌的点数与其余k张牌序列两端的点数是否有相同分情况讨论
容易证明,可以将第k+1张牌插入形成k+1张牌的序列。
 
    如果剩下的k张牌超过两个点数出现奇数次,那么找出的那张牌的两个点数不相同,并且剩下的k张牌中出现奇数次的那些点数一定包含找出的那张牌的点数。
不妨设第k+1张牌点数为(a,b),其余k张牌中某张牌点数为(x,a),那么将(x,a)改写为(x,b),就可以使得其余k张牌中最多只有两个点数出现奇数次。
    由归纳假设可以将这k张牌串起来。然后用(x,a)(a,b)替代(x,b)就得到了k+1张牌的序列。

    根据上述证明,就可以设计出构造算法。

 

原创粉丝点击