• BackTracking_Fixed sum for array elements


    Given an array a contains distinct positive integers, count how many combinations of integers in a add up to exactly sum

    For example, given int[] a = {11, 3, 8} ; and sum = 11

    You should output 2, because 11 == 11 and 3 + 8 == 11

    This is typically a backtracking problem

    Enumerate all the subsets of the given array to see how many of them match the condition

    when you write backtracking procedure using recursion, please be careful of which condition do you

    use to terminate the loop, in this code snippet, there two conditions,

    1. sum == 0

    2. t == a.Length

    and when t == a.Length, we might be got an solution yet, don't forget this case.

    Backtracking

    Code

    recursive way

    Code

    C法

    #include<stdio.h>
    #include<stdlib.h>
    
    int count = 0; // number of solutions
    
    /*
     * array - positive numbers
     * n     - element count in array
     * sum   - pair of sum
     * t     - recursion deep
     */
    void find_combinations(int *array, int n, int sum, int t) {
        if (t == n) {
            if (sum == 0) {
                count++;
            }
            return;
        }
    
        if (sum == 0) { // Find a solution
            count++;
        }
        else {
            if (sum >= array[t]) {  // left tree
                find_combinations(array, n, sum - array[t], t + 1);
            }
            if (sum > 0) {                  // right tree
                find_combinations(array, n, sum, t + 1);
            }
        }
    }
    
    int main(void) {
        int a[] = {11, 3, 8, 4, 1, 7};
        find_combinations(a, 6, 11, 0);
        printf("%d\n", count);
    
        system("pause");
        return 0;
    }

    ==

     

  • 相关阅读:
    几种常用的认证机制
    几种任务调度的 Java 实现方法与比较
    vue 安装教程
    JDK版本导致Unsupported major.minor version 52.0 error
    在SpringMVC框架下实现文件的 上传和 下载
    SpringMVC框架下实现JSON(类方法中回传数据到jsp页面,使用jQuery方法回传)
    SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显
    SpringMVC框架的基础知识;
    hibernate的二级缓存
    hibernate检索方式(HQL 检索方式,QBC 检索方式,本地 SQL 检索方式)
  • 原文地址:https://www.cnblogs.com/graphics/p/1495466.html
Copyright © 2020-2023  润新知