代码改变世界

解如下方程(java实现)

2014-04-13 13:54  大额_skylar  阅读(1725)  评论(0编辑  收藏  举报

 

             n                              (m=1) 

f(m,n)=  m                              (n=1)

             f(m-1,n)+f(m,n-1)      (m>1,n>1)

       

分析:本题就是类似于杨辉三角形,除了横边和纵边顺序递增外,其余每一个数是它左边和上边数字之和。

 

package JingDian;
//解类似杨辉三角形的方程
public class leiyanghui {
    public static void main(String[] args){
        diguijie shu1 = new diguijie();
        feidiguijie shu2 = new feidiguijie();
        System.out.println(shu1.f1(5,5));
        System.out.println(shu2.f2(5,5));
    }

}
//这里是递归解法
class diguijie{
    public int f1(int m,int n){
        if(1==m)
            return n;
        if(1==n)
            return m;
        return f1(m-1,n)+f1(m,n-1);
    }
}
//这里是非递归解法
class feidiguijie{
    public int f2(int m,int n){
        int[][] a;
        a = new int[50][50];
        for(int i=0;i!=m;++i)
            a[i][0] = i+1;
        for(int j=0;j!=n;++j)
            a[0][j] = j+1;
        for(int i=1;i!=m;++i)
            for(int j=1;j!=n;++j)
                a[i][j] = a[i-1][j]+a[i][j-1];
        return a[m-1][n-1];
    }
    
}