杨辉三角的变形-matlab-java

来源:互联网 发布:plc入门编程 编辑:程序博客网 时间:2024/06/06 03:37
function m=yangH(x)

% written by oneym
% 2013-12-21

y=2*x-1;
m=zeros(x,y);
m(1,1)=1;
m(2,1)=1;m(2,2)=1;m(2,3)=1;

for i=3:x
    for j=1:y
        if 1==j
            m(i,j)=m(i-1,j);
        end
        if 2==j
            m(i,j)=m(i-1,j)+m(i-1,j-1);
        end
        if j>2 & j<=i*2-1-2
            m(i,j)=m(i-1,j)+m(i-1,j-1)+m(i-1,j-2);
        end
        if j>i*2-1-2
            if 1==j-lens(m(i-1,:))
                m(i,j)=m(i-1,j-1)+m(i-1,j-2);
            end
            if 2==j-lens(m(i-1,:))
                m(i,j)=m(i-1,j-2);
            end
        end
    end
end

huaTu(m)

end


function len=lens(m)

% written by oneym
% 2013-12-17
% m:一维矩阵,返回矩阵中非零的数值个数

[x,y]=size(m);
f=find(0==m(1,:));
[r,c]=size(f);
len=y-c;

end



function huaTu(m)


% written by oneym
% 2013-12-21


[s,z]=size(m);
hold on
for i=1:s
    x=1:z;
    plot(x,m(i,:),'Color',rand(1,3));
end
hold off

end



import java.util.Scanner;


//written by oneym

//2013-12-15


public class yangHSJ {
    public yangHSJ(int x){
        boolean count=true;
        int[][] a=new int[x][2*x-1];
        a[0][0]=1;
        for(int i=1;i<x;i++){
            for(int j=0;j<2*i+1;j++){
                boolean flag=true;
                if(j-1<=0){
                    flag=false;
                    a[i][j]=(int) (0==j?a[i-1][j]:a[i-1][j]+a[i-1][j-1]);
                }
                if(j>=a[i-1].length){
                    flag=false;
                    a[i][j]=(int) (0!=j-a[i-1].length?a[i-1][j-2]:1==i?a[i-1][j]:a[i-1][j-1]+a[i-1][j-2]);
                }
                if(flag){
                    a[i][j]=a[i-1][j]+a[i-1][j-1]+a[i-1][j-2];
                }
            }
        }
        for(int i=0;i<2*x-1;i++){
            System.out.print(a[x-1][i]+"\t");
        }
        System.out.println();
        for(int k=0;k<2*x-1;k++){
            if(0==a[x-1][k]%2){
                System.out.println(x+","+(k+1));
                System.out.println(a[x-1][k]);
                count=false;
                break;
            }
            count=true;
        }
        if(count)
            System.out.println(-1);
    }
    public static void main(String args[]){
        Scanner reader=new Scanner(System.in);
        int x=reader.nextInt();
        new yangHSJ(x);
    }
}




0 0
原创粉丝点击