给定两个由两个数组表示的多项式,编写一个将给定两个多项式相加的函数。
例子:
Input: A[] = {5, 0, 10, 6}
B[] = {1, 2, 4}
Output: sum[] = {6, 2, 14, 6}
The first input array represents "5 + 0x^1 + 10x^2 + 6x^3"
The second array represents "1 + 2x^1 + 4x^2"
And Output is "6 + 2x^1 + 14x^2 + 6x^3"
强烈建议最小化您的浏览器,然后自己尝试。
加法比多项式乘法更简单。我们将结果初始化为两个多项式之一,然后遍历另一个多项式并将所有项添加到结果中。
add(A[0..m-1], B[0..n01])
1) Create a sum array sum[] of size equal to maximum of 'm' and 'n'
2) Copy A[] to sum[].
3) Traverse array B[] and do following for every element B[i]
sum[i] = sum[i] + B[i]
4) Return sum[].
以下是上述算法的实现。
C++
// Simple C++ program to add two polynomials
#include
using namespace std;
// A utility function to return maximum of two integers
int max(int m, int n) { return (m > n)? m: n; }
// A[] represents coefficients of first polynomial
// B[] represents coefficients of second polynomial
// m and n are sizes of A[] and B[] respectively
int *add(int A[], int B[], int m, int n)
{
int size = max(m, n);
int *sum = new int[size];
// Initialize the porduct polynomial
for (int i = 0; i
Java
// Java program to add two polynomials
class GFG {
// A utility function to return maximum of two integers
static int max(int m, int n) {
return (m > n) ? m : n;
}
// A[] represents coefficients of first polynomial
// B[] represents coefficients of second polynomial
// m and n are sizes of A[] and B[] respectively
static int[] add(int A[], int B[], int m, int n) {
int size = max(m, n);
int sum[] = new int[size];
// Initialize the porduct polynomial
for (int i = 0; i < m; i++) {
sum[i] = A[i];
}
// Take ever term of first polynomial
for (int i = 0; i < n; i++) {
sum[i] += B[i];
}
return sum;
}
// A utility function to print a polynomial
static void printPoly(int poly[], int n) {
for (int i = 0; i < n; i++) {
System.out.print(poly[i]);
if (i != 0) {
System.out.print("x^" + i);
}
if (i != n - 1) {
System.out.print(" + ");
}
}
}
// Driver program to test above functions
public static void main(String[] args) {
// The following array represents polynomial 5 + 10x^2 + 6x^3
int A[] = {5, 0, 10, 6};
// The following array represents polynomial 1 + 2x + 4x^2
int B[] = {1, 2, 4};
int m = A.length;
int n = B.length;
System.out.println("First polynomial is");
printPoly(A, m);
System.out.println("\nSecond polynomial is");
printPoly(B, n);
int sum[] = add(A, B, m, n);
int size = max(m, n);
System.out.println("\nsum polynomial is");
printPoly(sum, size);
}
}
Python3
# Simple Python 3 program to add two
# polynomials
# A utility function to return maximum
# of two integers
# A[] represents coefficients of first polynomial
# B[] represents coefficients of second polynomial
# m and n are sizes of A[] and B[] respectively
def add(A, B, m, n):
size = max(m, n);
sum = [0 for i in range(size)]
# Initialize the porduct polynomial
for i in range(0, m, 1):
sum[i] = A[i]
# Take ever term of first polynomial
for i in range(n):
sum[i] += B[i]
return sum
# A utility function to print a polynomial
def printPoly(poly, n):
for i in range(n):
print(poly[i], end = "")
if (i != 0):
print("x^", i, end = "")
if (i != n - 1):
print(" + ", end = "")
# Driver Code
if __name__ == '__main__':
# The following array represents
# polynomial 5 + 10x^2 + 6x^3
A = [5, 0, 10, 6]
# The following array represents
# polynomial 1 + 2x + 4x^2
B = [1, 2, 4]
m = len(A)
n = len(B)
print("First polynomial is")
printPoly(A, m)
print("\n", end = "")
print("Second polynomial is")
printPoly(B, n)
print("\n", end = "")
sum = add(A, B, m, n)
size = max(m, n)
print("sum polynomial is")
printPoly(sum, size)
# This code is contributed by
# Sahil_Shelangia
C#
// C# program to add two polynomials
using System;
class GFG {
// A utility function to return maximum of two integers
static int max(int m, int n)
{
return (m > n) ? m : n;
}
// A[] represents coefficients of first polynomial
// B[] represents coefficients of second polynomial
// m and n are sizes of A[] and B[] respectively
static int[] add(int[] A, int[] B, int m, int n)
{
int size = max(m, n);
int[] sum = new int[size];
// Initialize the porduct polynomial
for (int i = 0; i < m; i++)
{
sum[i] = A[i];
}
// Take ever term of first polynomial
for (int i = 0; i < n; i++)
{
sum[i] += B[i];
}
return sum;
}
// A utility function to print a polynomial
static void printPoly(int[] poly, int n)
{
for (int i = 0; i < n; i++)
{
Console.Write(poly[i]);
if (i != 0)
{
Console.Write("x^" + i);
}
if (i != n - 1)
{
Console.Write(" + ");
}
}
}
// Driver code
public static void Main()
{
// The following array represents
// polynomial 5 + 10x^2 + 6x^3
int[] A = {5, 0, 10, 6};
// The following array represents
// polynomial 1 + 2x + 4x^2
int[] B = {1, 2, 4};
int m = A.Length;
int n = B.Length;
Console.WriteLine("First polynomial is");
printPoly(A, m);
Console.WriteLine("\nSecond polynomial is");
printPoly(B, n);
int[] sum = add(A, B, m, n);
int size = max(m, n);
Console.WriteLine("\nsum polynomial is");
printPoly(sum, size);
}
}
//This Code is Contributed
// by Mukul Singh
PHP
Javascript
输出:
First polynomial is
5 + 0x^1 + 10x^2 + 6x^3
Second polynomial is
1 + 2x^1 + 4x^2
Sum polynomial is
6 + 2x^1 + 14x^2 + 6x^3