日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

组合问题 已知组合数_组合和问题

發(fā)布時(shí)間:2023/12/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 组合问题 已知组合数_组合和问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

組合問題 已知組合數(shù)

Description:

描述:

This is a standard interview problem to make some combination of the numbers whose sum equals to a given number using backtracking.

這是一個(gè)標(biāo)準(zhǔn)的面試問題,它使用回溯功能將總和等于給定數(shù)字的數(shù)字進(jìn)行某種組合。

Problem statement:

問題陳述:

Given a set of positive numbers and a number, your task is to find out the combinations of the numbers from the set whose summation equals to the given number.

給定一組正數(shù)和一個(gè)數(shù)字,您的任務(wù)是從集合中找出總和等于給定數(shù)字的數(shù)字組合。

Input:Test case TT no. of N values and corresponding N positive numbers and the Number.E.g.364 1 3 2 4 5874 5 2 5 1 3 410710 1 2 7 6 1 58Constrains:1 <= T <= 5001 <= N <= 201 <= A[i] <= 91 <= Number<= 50Output:Print all the combination which summation equals to the given number.

Example

Input:N = 7Set[] = 10 1 2 7 6 1 5Number = 8Output:1 1 61 2 51 72 6

Explanation with example

舉例說明

Let there is a set S of positive numbers N and a positive number.

設(shè)一組正數(shù)N和一個(gè)正數(shù)S。

Making some combinations in such a way that the summation of that combination results that given number is a problem of combination and we will solve this problem using a backtracking approach.

進(jìn)行某種組合,以使該組合的總和導(dǎo)致給定數(shù)字是組合的問題,我們將使用回溯方法解決此問題。

Let, f(i) = function to insert the ith number into the combinational subset.

In this case, we will consider two cases to solve the problem,

在這種情況下,我們將考慮兩種情況來解決該問題,

  • We will consider ith element into the part of our combination subset. (f(i))

    我們將第ith個(gè)元素納入我們的組合子集的一部分。 ( f(i) )

  • We will not consider ith element into the part of our combination subset.(not f(i))

    我們不會在組合子集中考慮第ith個(gè)元素。( 不是f(i) )

  • And every time we will check the current sum with the number. Each of the time we will count the number of occurrence and the also the combinations.

    并且每次我們將用數(shù)字檢查當(dāng)前總和。 每次,我們將計(jì)算發(fā)生的次數(shù)以及組合。

    Let,f(i) = function to insert the ith number into the combinational subset.

    For the input:

    對于輸入:

    S[] = {10, 1, 2, 7, 6, 1, 5}Number = 8

    Here in this case we will discard that edges which have a current sum greater than the given number and make a count to those numbers which are equal to the given number.

    在這種情況下,我們將丟棄當(dāng)前總和大于給定數(shù)字的那些邊,并對等于給定數(shù)字的那些數(shù)字進(jìn)行計(jì)數(shù)。

    C++ implementation:

    C ++實(shí)現(xiàn):

    #include <bits/stdc++.h> using namespace std;void combination(int* arr, int n, int num, int pos, int curr_sum, vector<vector<int> >& v, vector<int> vi, set<vector<int> >& s) {if (num < curr_sum)return;if (num == curr_sum && s.find(vi) == s.end()) {s.insert(vi);v.push_back(vi);return;}//go for the next elements for combinationfor (int i = pos; i < n; i++) {if (curr_sum + arr[i] <= num) {vi.push_back(arr[i]);combination(arr, n, num, i + 1, curr_sum + arr[i], v, vi, s);vi.pop_back();}} }//print the vector void print(vector<vector<int> > v) {for (int i = 0; i < v.size(); i++) {for (int j = 0; j < v[i].size(); j++) {cout << v[i][j] << " ";}cout << endl;} }void combinational_sum(int* arr, int n, int num) {vector<vector<int> > v;vector<int> vi;int pos = 0;int curr_sum = 0;set<vector<int> > s;combination(arr, n, num, pos, curr_sum, v, vi, s);print(v); }int main() {int t;cout << "Test Case : ";cin >> t;while (t--) {int n, num;cout << "Enter the value of N : ";cin >> n;int arr[n];cout << "Enter the values : ";for (int i = 0; i < n; i++) {cin >> arr[i];}sort(arr, arr + n);cout << "Enter the number : ";cin >> num;combinational_sum(arr, n, num);}return 0; }

    Output

    輸出量

    Test Case : 3 Enter the value of N : 6 Enter the values : 4 1 3 2 4 5 Enter the number : 8 1 2 5 1 3 4 3 5 4 4 Enter the value of N : 7 Enter the values : 4 5 2 5 1 3 4 Enter the number : 10 1 2 3 4 1 4 5 2 3 5 2 4 4 5 5 Enter the value of N : 7 Enter the values : 10 1 2 7 6 1 5 Enter the number : 8 1 1 6 1 2 5 1 7 2 6

    翻譯自: https://www.includehelp.com/icp/combinational-sum-problem.aspx

    組合問題 已知組合數(shù)

    總結(jié)

    以上是生活随笔為你收集整理的组合问题 已知组合数_组合和问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。