Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的蛮力多项式算法_Java_Algorithm_Brute Force - Fatal编程技术网

java中的蛮力多项式算法

java中的蛮力多项式算法,java,algorithm,brute-force,Java,Algorithm,Brute Force,我需要对蛮力多项式求值算法进行增强。我得到了x的最大幂(n的值),多项式(a,b,c,…)的所有元素的系数的值作为一个整数数组列表。但是我不能在java上应用这个算法:f(x)=ax^n+bx^(n-1)+cx^(n-3)+…+如何在java上应用这个多项式?它的算法是什么?有什么帮助吗 package brute.force; import java.util.*; import java.util.Scanner; public class BruteForce { publi

我需要对蛮力多项式求值算法进行增强。我得到了x的最大幂(n的值),多项式(a,b,c,…)的所有元素的系数的值作为一个整数数组列表。但是我不能在java上应用这个算法:f(x)=ax^n+bx^(n-1)+cx^(n-3)+…+如何在java上应用这个多项式?它的算法是什么?有什么帮助吗

package brute.force;

import java.util.*;
import java.util.Scanner;

public class BruteForce {

    public static void main(String[] args) {
        Scanner scan = new Scanner (System.in);
        ArrayList<Integer> coefficients = new ArrayList<>();
        int powerOfX, x;

        System.out.print("Enter integers please ");
        System.out.println("(EOF or non-integer to terminate): ");

        while(scan.hasNextInt()){
         coefficients.add(scan.nextInt());
        }

        Integer [] nums = coefficients.toArray(new Integer[0]);
        for(int i = 0; i < nums.length; i++){
            System.out.println(nums[i]);
        }
    }   
}
package brute.force;
导入java.util.*;
导入java.util.Scanner;
公共类暴力{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
ArrayList系数=新的ArrayList();
int-powerOfX,x;
系统输出打印(“请输入整数”);
System.out.println(“(EOF或非整数终止):”;
while(scan.hasNextInt()){
add(scan.nextInt());
}
整数[]nums=系数.toArray(新整数[0]);
对于(int i=0;i
你是说这个

double result = 0;
for(int i = 0; i < nums.length; i++) {
   result += nums[i] * Math.pow(x, i);  // nums has coefficients in increasing order
}
double result=0;
对于(int i=0;i
你是说这个

double result = 0;
for(int i = 0; i < nums.length; i++) {
   result += nums[i] * Math.pow(x, i);  // nums has coefficients in increasing order
}
double result=0;
对于(int i=0;i
您需要通过以下迭代进行计算:

    double result = 0;
    Integer [] nums = coefficients.toArray(new Integer[0]);
    for(int i = 0; i < nums.length; i++){
        result = result *x + nums[i];
    }
    System.out.println(result);
double result=0;
整数[]nums=系数.toArray(新整数[0]);
对于(int i=0;i
它被称为霍纳法。 这种方法(例如四次多项式)的优点是:

f(x)=ax^3+bx^2+cx+z

转换为:


f(x)=((a)*x+b)*x+c)*x+z

您需要通过以下迭代进行计算:

    double result = 0;
    Integer [] nums = coefficients.toArray(new Integer[0]);
    for(int i = 0; i < nums.length; i++){
        result = result *x + nums[i];
    }
    System.out.println(result);
double result=0;
整数[]nums=系数.toArray(新整数[0]);
对于(int i=0;i
它被称为霍纳法。 这种方法(例如四次多项式)的优点是:

f(x)=ax^3+bx^2+cx+z

转换为:

f(x)=((a)*x+b)*x+c)*x+z

您可以使用它以计算效率高的形式计算多项式

user987339发布了一个Java实现。

您可以使用它以计算效率高的形式计算多项式


user987339发布了一个Java实现。

你是在问算法还是如何在Java中获取输入。你的确切问题是什么?我在问算法,我得到了上面所有的输入。你是在问算法还是如何在Java中获取输入。你的确切问题是什么?我在问算法,我得到了上面所有的信息。谢谢你给我留下作者的名字!谢谢你给我留下作者的名字!这真的很好,但你没有使用x值的幂。如何用x的幂来限制算法?实际上你不必使用x的幂,因为它一直根据系数运行,但我想用x的幂来检查。这很好,但你没有使用x的幂。如何用x的幂来限制算法?实际上,你们不必使用x的幂,因为它是根据系数来进行的,但我想用x的幂来检查。