`
holoblog
  • 浏览: 1224258 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18888
文章分类
社区版块
存档分类
最新评论

杨辉三角代码

 
阅读更多

****************************************************************************************


Java codepublic class Yanghui {

public static void main(String[] args) {
Yanghui yang = new Yanghui();
yang.printYanghuiTriangle(13);
}

/**
* 生成指定行数的杨辉三角形
* @param lines 杨辉三角形的行数
*/
public void printYanghuiTriangle(int lines) {
int[] line = new int[lines];
int maxLen = getMaxLen(lines);
for(int i = 0; i < lines; i++) {
line[0] = line[i] = 1;
for(int j = 1, k = i / 2, pre = line[0]; j <= k; j++) {
int cur = line[j];
line[i - j] = line[j] += pre;
pre = cur;
}
printLine(line, i + 1, maxLen);
}
}

/**
* 根据指定行数的杨辉三角形,计算其中最大数字的长度
* @param lines 杨辉三角形的行数
* @return 最大数字的长度
*/
private int getMaxLen(int lines) {
int k = lines / 2;
long maxNum = factorial(k + 1, lines - 1) / factorial(1, lines - 1 - k);
return getLength(maxNum);
}

/**
* 阶乘计算
* @param start 阶乘计算的起始数字
* @param num 阶乘计算的终止数字
* @return 阶乘计算结果
*/
private long factorial(int start, int num) {
long result = start > 0 ? start : 1L;
while(num > start) {
result *= num--;
}
return result;
}

/**
* 根据指定数字计算数字的长度
* @param num 数字
* @return 数字的长度
*/
private int getLength(long num) {
int len = 0;
while(num > 0L) {
num /= 10L;
len++;
}
return len;
}

private void printLine(int[] yanghui, int line, int width) {
for(int i = 0, k = (yanghui.length - line) * width; i < k; i++) {
System.out.print(" ");
}
for(int i = 0; i < line; i++) {
if(i > 0) {
for(int j = 0; j < width; j++) {
System.out.print(" ");
}
}
System.out.printf("%" + width + "d", yanghui[i]);
}
System.out.println();
if(width > 1) {
System.out.println();
}
}
}

*********************************************************************************************************************************************


public static void main(String[] args) {
int setMax = 10;

int l[] = new int[2 * setMax + 1];
int s[] = new int[2 * setMax + 1];
l[0] = 0;
l[1] = 1;
l[2] = 0;
for (int i = 1; i <= setMax; ++i)
{
System.out.print(getEmpty(i,setMax));
for (int j = 1; j <= i; ++j)
{
s[j] = l[j - 1] + l[j];

System.out.print(getEmpty(String.valueOf(s[j])));
}

System.arraycopy(s, 0, l, 0, i + 1);
System.out.println();
}


}

static String getEmpty(String s)
{
int length = s.length();
String outs = "";

for(int i = length;i<6;i ++)
{
outs += " ";

}
outs = outs + s;

return outs;
}

static String getEmpty(int len,int maxLength)
{
String empty = "";
for(int i = maxLength - len;i > 0;i--){
empty += " ";
}
return empty;
}

*****************************************************************************************************************************************************

public class YangHui {

public static void main(String[] args) {
int level=10;
int maxNum=c(level-1,(level+1)/2);
int maxLength=Integer.toString(maxNum).length();

int[] a=new int[level+2];
a[1]=1;
int temp,tmp;
for(int i=1;i<level+1;i++){
System.out.printf("%"+maxLength*(level-i+1)+"s","");
temp=0;tmp=0;
for(int j=1;j<=i;j++){
tmp=a[j];
a[j]+=temp;
temp=tmp;
System.out.printf("%"+maxLength*2+"d",a[j]);
}
System.out.println();
}
}
public static int c(int n,int m){
if(m==1) return n;
else return (n*c(n-1,m-1)/m);
}
}

output:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1


import java.util.Scanner;

public class Yang {


public void fun(int num){


int[][] m=new int [num][];
for(int i=0;i<m.length;i++){
m[i]=new int[i+1];
m[i][0]=1;
m[i][i]=1;
for(int j=0;j<m[i].length-1;j++){
if(j>=1&&i>1)
m[i][j]=m[i-1][j-1]+m[i-1][j];
}
}
for(int i=0;i<m.length;i++){
for(int j=0;j<m[i].length;j++){
System.out.print(m[i][j]);
System.out.print('/t');
}
System.out.println();
}
}

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入杨辉三角的层数");
int num = scan.nextInt();
new Yang().fun(num);
}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics