Bokstan 2022-09-29 18:23 采纳率: 50%
浏览 121
已结题

java多项式求解,杨辉三角

img


java基础练习,要求代码,凑字数,满足以上要求,凑字数,再来凑字数,继续凑字数

急需

  • 写回答

3条回答 默认 最新

  • 进自欢 2022-09-30 09:15
    关注
    获得3.00元问题酬金
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int a=sc.nextInt();
            int b=sc.nextInt();
            int n=sc.nextInt();
            Yanghui yanghui=new Yanghui(a,b,n);
            int[] arr1=new int[n+1];
            int[] arr2= yanghui.getarrN();
            for(int i=0;i<=n;i++){
                arr1[i]=com(n,i);
            }
            boolean issame=true;
            for(int i=0;i<=n;i++){
                if(arr1[i]!=arr2[i]){
                    issame=false;
                }
            }
            yanghui.printarr();
            String str= Arrays.toString(arr1);
            System.out.println("二项式展开:       "+str);
            str=Arrays.toString(arr2);
            System.out.println("杨辉三角第"+n+"行系数:"+str);
            if(issame){
                System.out.println("杨辉三角第"+n+"行系数与二项式展开相同");
            }
            else {
                System.out.println("杨辉三角第"+n+"行系数与二项式展开不同");
            }
            System.out.println("输入 x  n");
            int x=sc.nextInt();
            n=sc.nextInt();
            System.out.println("x^n = "+yanghui.pow(x,n));
        }
        static int com(int n,int m){    //计算二项式系数
            int ret=1;
            for(int i=0;i<m;i++){
                ret*=n;
                n--;
            }
            for(int i=m;i>1;i--){
                ret/=i;
            }
            return ret;
        }
    }
    
    class Yanghui{
        private int a,b,n;
        private int[][] arr;
        public int getA() {
            return a;
        }
    
        public void setA(int a) {
            this.a = a;
        }
    
        public int getB() {
            return b;
        }
    
        public void setB(int b) {
            this.b = b;
        }
    
        public int getN() {
            return n;
        }
    
        public void setN(int n) {
            this.n = n;
        }
    
        public int[][] getArr() {
            return arr;
        }
    
        public void setArr(int[][] arr) {
            this.arr = arr;
        }
        public int pow(int x,int n){    //计算x^n
            if(n==0){
                return 1;
            }
            else if(n%2==0){
                return pow(x*x,n/2);
            }
            else{
                return pow(x*x,n/2)*x;
            }
        }
        public Yanghui(int a, int b, int n) {
            this.a = a;
            this.b = b;
            this.n = n;
            arr=new int[n+1][n+1];
            for(int i=0;i<n;i++){
                arr[i][0]=1;
            }
            for(int i=1;i<n;i++){
                for(int j=1;j<=i;j++){
                    arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
                }
            }
        }
        public int[] getarrN(){     //返回第n行系数
            int[] ret=new int[n+1];
            ret[0]=1;
            for(int i=1;i<=n;i++){
                ret[i]=arr[n-1][i-1]+arr[n-1][i];
            }
            return ret;
        }
        public void printarr(){     //打印前n行
            for(int i=0;i<n;i++){
                for(int j=0;j<=i;j++){
                    System.out.print(arr[i][j]+" ");
                }
                System.out.println();
            }
        }
    }
    
    评论
  • CupidoZ 2022-09-30 14:15
    关注

    作业自己写为妙

    评论
  • 不懂人情世故 2022-09-30 18:13
    关注
    获得4.50元问题酬金
    
    package com.ajieyao.modules;
    
    import java.util.Arrays;
    
    public class Demo {
    
        public static void main(String[] args) {
            Yang yang = new Yang(3,4,5);
            yang.printTriangle();
            System.out.println(yang.caculat());
            yang.expandString();
            int i = yang.expandCaculate();
            System.out.println(i);
        }
        static class Yang{
            private int a,b,n;
            private int[][] arr;
            public Yang() {
            }
            public Yang(int a, int b, int n) {
                this.a = a;
                this.b = b;
                this.n = n;
                this.arr = getTriangle(n);
            }
            private double caculat(){
                return Math.pow(a+b, n);
            }
            private void printTriangle(){
                for (int i = 0; i < this.arr.length; i++) {
                    System.out.println(Arrays.toString(this.arr[i]));
                }
            }
            private int[][] getTriangle(int n)  {
                int[][] array = new int[n+1][];
                for (int i = 0; i < array.length; i++) {
                    array[i] = getNextRow(i);
                }
                return array;
            }
            private int[] getNextRow(int n)  {
                if(n == 0){
                    int[] a = {1};
                    return a;
                }
                if(n == 1){
                    int[] a = {1,1};
                    return a;
                }
                if(n == 2){
                    int[] a = {1,2,1};
                    return a;
                }
                int[] row = getNextRow(n-1);
                int[] ints = new int[row.length + 1];
                //第一个数字不需要计算 就取1
                ints[0] = 1;
                //sum存储的是上一个数组的计算结果,从一个开始,每次计算当前元素与后一个元素的和
                int[] sum = new int[row.length];
                for (int i = 0; i < row.length; i++) {
                    int s = 1;
                    //最后一个数字不需要计算 就取本身
                    if(i == row.length-1){
                        s = row[i];
                    }else{
                        s = row[i]+row[i+1];
                    }
                    sum[i] = s;
                }
                for (int i = 0; i < sum.length; i++) {
                    ints[i+1] = sum[i];
                }
                return ints;
            }
            private String expandString(){
                StringBuffer sb = new StringBuffer("");
                int[] row = this.arr[this.arr.length-1];
                int c = this.n;
                for (int i = 0; i < row.length; i++) {
                    int n = row[i];
                    sb.append(n);
                    if(c != 0){
                        sb.append("*");
                        sb.append(a);
                        sb.append("^");
                        sb.append(c);
                    }
                    if(i != 0){
                        sb.append("*");
                        sb.append(b);
                        sb.append("^");
                        sb.append(i);
                    }
                    if(i != row.length - 1){
                        sb.append("  +  ");
                    }
                    c--;
                }
                System.out.println(sb);
                return sb.toString();
            }
            private int expandCaculate(){
                int[] row = this.arr[this.arr.length-1];
                int c = this.n;
                int count = 0;
                for (int i = 0; i < row.length; i++) {
                    int n = row[i];
                    count += n*Math.pow(a, c)*Math.pow(b, i);
                    c--;
                }
                return count;
            }
        }
    
    }
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 10月7日
  • 修改了问题 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥15 scikit安装之后import不了
  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因
  • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
  • ¥15 数学问题也不知道那种类型的问题
  • ¥15 R作图的时候,文本框重叠了怎么办?
  • ¥15 用python重建流场
  • ¥15 stm32 调试舵机pwm输出异常