• 2022-05-31
    设计一个算汰求解[tex=2.857x1.0]Zes1jU4ruiOEyJIvBU8Wdg==[/tex]问题 : 有三根柱子[tex=0.714x1.0]AiT6fhT2pvop+UvpD2oClg==[/tex][tex=3.714x1.286]jCeyqxNw3rUQvLZ/7DFe0Q==[/tex] 有 [tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]个半径不同的中间有孔的圆盘,这[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]个圆盘在柱子[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 上,从上往下半程依次增大。要求把所有圆盘移至目标盘 [tex=0.714x1.0]YiLkHgl7MlxE+QjUplQUKA==[/tex]上, 可将柱子[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex]作为辅助柱,移动圆盘时必须服从以下规则[tex=1.286x1.357]VAHhaW1te0xvoqDVN54/dg==[/tex]每次只可搬动一个圆盘。[tex=1.857x1.286]q6stUxRkyneRT9AdCNOTIw==[/tex]任何柱子上都不允许大圆盘在小圆盘的上面。 并分析算法的时间复杂度。
  • 解:求解 [tex=2.857x1.0]Zes1jU4ruiOEyJIvBU8Wdg==[/tex]问题的思路为 : 当 [tex=1.929x1.0]Sv/F3aDmYPEysXJR7YXoxg==[/tex] 时,搬动一次即可:当 [tex=2.5x1.071]IQHE1TjHK9ZLrQqh/WDk6A==[/tex] 时,分三步进行[tex=1.286x1.357]VAHhaW1te0xvoqDVN54/dg==[/tex] 将[tex=1.929x1.143]mOtPZiBzvvxdWKAZrC3SgQ==[/tex] 个圆盘(除最大的圆盘外)从柱子[tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex] 移到柱子[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex];[tex=1.786x1.286]vR0uZJ0+MnChig/sIe/LgQ==[/tex]将最大的圆盘从杜子[tex=0.714x1.0]AiT6fhT2pvop+UvpD2oClg==[/tex] 移动到杜子[tex=0.714x1.0]J/aA9EEo0KmJFnWWfX7LmQ==[/tex];[tex=1.857x1.286]5XR7zNOYx/ceQ2xW3UiHHA==[/tex]将柱子[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]上的[tex=2.143x1.0]lGo/5tu/1leiTHiIKnI1pA==[/tex]个圆盘从柱子[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 移动到柱子[tex=0.714x1.0]J/aA9EEo0KmJFnWWfX7LmQ==[/tex]。由此得到以下求解算法:void hanoi( int n,char a,char b, char c){    if (n == 1 )        printf ( " move % d disk from % c to t c\n" , n,a, c);    else    {    hanoi(n - 1,a,c, b);        printf( "move % d disk from % c to % c\n" ,n, a, c);            hanoi(n- 1, b,a,c);    }}由上述算法得到时间复杂度的递归关系如下:[tex=12.214x3.071]CeOWlpLvH8Qhk/RmfIvBHdUhsWAYoWhb2Exx+8nhNhk2NvTf4DxOGTAiToGj1xDwCDDuAKyHzhVzV4LzPiFG+6b8Lmlbxi3gUas4vl4pE2A=[/tex]所以[tex=7.929x1.429]bPLFA6sOns/dzhNl9TPI93HdxCDpKd16wfzjUYQ5O+LTJC/DqHPnJ0plSluozkZY[/tex][tex=16.214x1.5]E1dQTVsULKYIJtlRVf3xNyU9Ya6IMx4ggfAZgnL6d/QcHWKxEMJ3LwJ9jJPKzlac[/tex][tex=18.286x1.5]SmifIPf0Ia+llWUIyUFuz051BQ+4lNfZ9cc55pXjDzp9TaEAioUCJrXXSz43R1Ln7p72cO3fX+g43DGk+3It+g==[/tex][tex=0.286x1.071]z1by9Nlt6xNRSn97O/dgew==[/tex][tex=11.429x1.5]uhJ0sraeT4JatAxtgrU+d+eV94xNOnKdDVvtaTz6TkbdFKDOSXNI5nIowjiM8zw6[/tex][tex=3.5x1.357]jGnkIoJ/NdZ6iF/1xeO3a5jHHAv/REPdWuxlOXlynhg=[/tex]

    举一反三

    内容

    • 0

      求证: 若 [tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex] 阶矩阵 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 有 [tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]个互不相同的特征值, 则 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 的特征多项式 和极小多项式相等.

    • 1

      对任意[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]阶矩阵[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex],必有[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]阶矩阵[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]和[tex=0.714x1.0]YiLkHgl7MlxE+QjUplQUKA==[/tex],使[tex=4.786x1.143]bjug+2fCbFahifOyjMZ6iQ==[/tex],且 [tex=3.143x1.143]57nkaTxHZKLdDQlG6CJo10QNnuiWY4bAdibLZ4zTNVk=[/tex],[tex=3.857x1.286]AWQaojZoslrg4RmkgN7Iew==[/tex]。

    • 2

      设[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]为[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]阶实对称正定矩阵, 证明[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]的[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]个互相正交的特征向量[tex=6.857x1.5]1OLDM79a1WnqWkErUXr8P604kgpkEAoDOqD5+BNAsbem5zwUCkpRL26F98rz8e/f[/tex]关于[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]共轭.

    • 3

      设[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 是一个 [tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex] 阶方阵,证明:若 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 是对称矩阵,且对任一个 [tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]维向量 [tex=1.143x1.214]v57PrtvcRANvjTjSZkCHmQ==[/tex]有 [tex=4.5x1.429]15pNkwSKAI/4xStQz3DLfw==[/tex]那么 [tex=2.571x1.0]WPtNkIUX8epXX87iaYQs6w==[/tex]

    • 4

      如果集[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]有[tex=0.643x0.786]/he/ol8BkDuTTL9yMPtH4Q==[/tex]个元素,问[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]共有多少个子集?[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]的真子集有几个?