[Daily Coding Problem] Find the total number of solutions of a linear equation of n variables

Posted lz87

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Daily Coding Problem] Find the total number of solutions of a linear equation of n variables相关的知识,希望对你有一定的参考价值。

Given a linear equation of n variables, find the total number of non-negative integer solutions of it. All coefficients are positive. 

Example: 

input: x + 2 * y = 5

output: 3,  the 3 possible integer solutions are x = 1, y = 2; x = 3, y = 1; x = 5, y = 0.

 

This problem can be simply thought as a coin change problem.
You are given coins of different denominations and a total amount of money.
Write a function to compute the number of combinations that make up that amount.
You may assume that you have infinite number of each kind of coin.

rhs is the sum.
coeffients are the coin denominations.
each variable is the number of one coin denomination.

 

public class LinearEquationIntegerSolutions {
    public static int countSolutions(int[] coeff, int n, int rhs) {
        int[] dp = new int[rhs + 1];
        dp[0] = 1;  // if rhs == 0, there is only one solution: all variables are 0.

        for(int i = 0; i < n; i++) {
            for(int j = coeff[i]; j <= rhs; j++) {
                dp[j] += dp[j - coeff[i]];
            }
        }
        return dp[rhs];
    }

    public static void main(String[] args) {
        int[] coeff = {1,2};
        countSolutions(coeff, 2, 5);
    }
}

 

以上是关于[Daily Coding Problem] Find the total number of solutions of a linear equation of n variables的主要内容,如果未能解决你的问题,请参考以下文章

[Daily Coding Problem 290] Quxes Transformation

[Daily Coding Problem 250] Cryptarithmetic Puzzle

[Daily Coding Problem 70] Nth perfect number

[Daily Coding Problem 68] Count Pairs of attacking bishop pairs

[Daily Coding Problem 24] Implement locking in a binary tree.

[Daily Coding Problem 294] Shortest round route with rising then falling elevations