KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
第一行包含一个整数数n。 (1≤n≤30)
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
6
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); List<List<Integer>> outerList = new ArrayList<>(); for(int i=0;i<n;i++) { List<Integer> inner = new ArrayList<>(); for(int j=0;j<=i;j++) { inner.add(1); } outerList.add(inner); } List<Integer> InnerList = new ArrayList<>(); for(int i=2;i<n;i++) { InnerList = outerList.get(i); for(int j=1;j<InnerList.size()-1;j++) { int num1 = outerList.get(i-1).get(j-1); int num2 = outerList.get(i-1).get(j); InnerList.set(j,num1+num2); } } for(List<Integer> list : outerList) { for(Integer num : list) { System.out.printf("%5d",num); } System.out.println(); } } }第二种简便方法:
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); List<List<Integer>> outerList = new ArrayList<>(); for (int i = 0; i < n; i++) { List<Integer> inner = new ArrayList<>(); for (int j = 0; j <= i; j++) { if (j == 0 || j == i) { inner.add(1); } else { Integer integer1 = outerList.get(i - 1).get(j - 1); Integer integer2 = outerList.get(i - 1).get(j); inner.add(1,integer1+integer2); } } outerList.add(inner); } for(List<Integer> list : outerList) { for(Integer num : list) { System.out.printf("%5d",num); } System.out.println(); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { if (j == i || j == 0) { arr[i][j] = 1; System.out.printf("%5d", arr[i][j]); } else { arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; System.out.printf("%5d", arr[i][j]); } } System.out.println(); } } }
#include<stdio.h> int main() { int num = 0, arr[30][30] = {0}; scanf("%d", &num); for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) { if (i >= j) { if (j == 0 || i == j) arr[i][j] = 1; else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } if (arr[i][j] != 0) printf("%5d", arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main(){ int n, i, j, arr[30][30]; scanf("%d", &n); for(i = 0; i < n; i++){ for(int j = 0; j < i + 1; j++) arr[i][j] = (j == 0 || j == i)?1 : arr[i-1][j]+arr[i-1][j-1]; } for(i = 0; i < n; i++){ for(j = 0; j < i + 1; j++) printf("%5d", arr[i][j]); printf("\n"); } return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int arr[n][n]; for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ if(i == j || j == 0) arr[i][j] = 1; else{ arr[i][j] = arr[i-1][j -1 ] + arr[i - 1][j]; } if( i>=j) cout<<setw(5)<<arr[i][j]; } cout<<endl; } }
#include <stdio.h> int main() { int a[35][35],b[15][15]; int i,j,n,m,flag=1,k; scanf("%d",&n); for(i=0;i<n;i++){ a[i][0]=1; a[i][i]=1; } for(i=1;i<n;i++){ for(j=1;j<=i;j++){ a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<n;i++){ for(j=0;j<=i;j++){ printf("%5d",a[i][j]); } printf("\n"); } }
#include <stdio.h> int Yangh(int n, int m) { if(n == m || m == 0) { return 1; } return Yangh(n - 1, m) + Yangh(n - 1, m - 1); } int main() { int n = 0; int i = 0; int j = 0; scanf("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j <= i; j++) { printf("%5d", Yangh(i, j)); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int arr[30][30] = {0}; int i = 0; int j = 0; int n = 0; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { if (i == j) arr[i][j] = 1; if (j == 0) arr[i][j] = 1; if (i > 1 && j > 0) arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } } for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%5d", arr[i][j]); } printf("\n"); } return 0; }
#include <iostream> #include <cstdio> #include <vector> using namespace std; vector<vector<int> > arr; void print(int n,vector<vector<int>> arr){ for(int i = 0;i < n ; ++i){ for(int j = 0; j < i+1; ++j){ printf("%5d",arr[i][j]); } printf("\n"); } } void set(int n,vector<int> pre_row,int row){ if(row == n){ return; } vector<int>next_row; next_row.push_back(1); for(int i = 1; i < pre_row.size();++i){ next_row.push_back(pre_row[i-1] + pre_row[i]); } next_row.push_back(1); arr.push_back(next_row); set(n, next_row, row+1); } int main() { int n; cin>>n; vector<int> pre_row; pre_row.push_back(1); arr.push_back(pre_row); set(n, pre_row,0); print(n,arr); return 0; }
n = int(input()) a = [] for i in range(1,n+1): if i == 1: a.append([i]) a.append([1,*[a[i-1][j-1]+a[i-1][j] for j in range(1,i)],1]) for i in a[:-1]: for j in i: print("{:>5d}".format(j),end="") print()方式二
n=int(input()) a=[[0]*n for i in range(n)] for i in range(n): for j in range(i+1): if j==0&nbs***bsp;j==i: a[i][j]=1 else: a[i][j] = a[i-1][j-1] + a[i-1][j] for i in a: for j in i: if j > 0: print("{:>5d}".format(j),end="") print()
#include <stdio.h> int main() { int n,a[31][31]={0},b=1; scanf("%d",&n); a[1][1]=1; int row=2,col=1; while(b++<n){ for(int i=col;i<=b;i++)a[row][i]=a[row-1][i-1]+a[row-1][i]; row++; } for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++)printf("%5d",a[i][j]); printf("\n"); } return 0; }
package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) arr := [30][30]int{} arr[1][1] = 1 for i := 2; i <= n; i++ { for j := 1; j <= n; j++ { arr[i][j] = arr[i-1][j] + arr[i-1][j-1] } } for i := 1; i <= n; i++ { for j := 1; j <= i; j++ { fmt.Printf("%5d", arr[i][j]) } fmt.Println() } }
#include <stdio.h> int main() { int n; int arr[100][100]; scanf("%d",&n); //赋值 for(int i = 0;i<n;i++) { for(int j = 0;j<=i;j++) { arr[i][j]=1; } } //用上方两位相加 for(int i = 0;i<n;i++) { for(int j = 1;j<i;j++) { arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; } } //打印 for(int i = 0;i<n;i++) { for(int j = 0;j<=i;j++) { printf("%5d",arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int n; scanf("%d ",&n); int arr[n][n]; int i; for(i=0;i<n;i++) { int j; for(j=0;j<=i;j++) { if(j==0||j==i) { arr[i][j] = 1; } else { arr[i][j] = arr[i-1][j] + arr[i-1][j-1];//正好是一个直角三角形 } printf("%5d",arr[i][j]);//域宽为5 } printf("\n"); } return 0; }