zoukankan      html  css  js  c++  java
  • 杭电2048(此种方法比较麻烦的,建议推荐本人的 【杭电2048(递推)】http://www.cnblogs.com/xiohao/archive/2012/09/28/2706573.html)

    问题分析:此题也是一道递推问题!首先,当m=4的时候 例如 {1 2 3 4 其中当1取2的时候
                                                            1 2 3 4}
    此时如果2取1,则只能3和4互相交换({3 4  相当于a[2]的值)!如果2取3或4,则剩余{3 4
                                       3 4}                                       1 4}
    此时相当于{1 2 3 中1取2剩余的情况!!依次类推 b=(double)1/(i-1)*a[i-2]+(double)(i-2)/(i-1)*Q;
               1 2 3}                                   a[i]=(double)(i-1)/i*b;

            

    #include<iostream>
    using namespace std;
    int main()
    {
     int n,m,i;double a[25],b,Q;
     cin>>n;
        getchar();
     while(n--)
       {
        cin>>m;
        a[1]=0;
        a[2]=0.5;
        a[3]=(double)1/3;
        Q=0.5;

        for(i=4;i<=m;i++)
        {     b=(double)1/(i-1)*a[i-2]+(double)(i-2)/(i-1)*Q;
              a[i]=(double)(i-1)/i*b;
               Q=b;

        }
        printf("%.2lf",a[m]*100);cout<<"%"<<endl;
        }
     return 0;
    }

  • 相关阅读:
    图论复习
    数据结构复习
    数学复习
    字符串算法复习
    还有9天就要走了
    JS 多个一维数组排例组合的所有可能
    PHP 多个一维数组排列组合的所有可能
    维护DOWNID
    LINUX
    Multiple Versions of PHP run on server
  • 原文地址:https://www.cnblogs.com/xiohao/p/2700473.html
Copyright © 2011-2022 走看看