從n個數里面選擇m個數


從n個數里面選擇m個數

#include<iostream>
#include<vector>
using namespace std;
vector<int> s;
void dfs(int a[],int n,int m,int index,int nowk)
{
    if(nowk==m){//當我挑選的數已經夠得時候,就把它輸出。
        for(int i=0;i<2;i++){
            cout << s[i] << ' ';
        }
        cout << endl;
        return ;
    }
    if(index<n){
        s.push_back(a[index]);
        dfs(a,n,m,index+1,nowk+1);
        s.pop_back();
        dfs(a,n,m,index+1,nowk);
    }
}
int main()
{
    int n,m;
    cin >> n >> m;//n個數我要選擇m個數,選出來的數是沒有順序的
    int a[n];
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    dfs(a,n,m,0,0);
    return 0;
}

這個代碼是從n個數里選擇m個數,是組合數。我舉個例子吧。假如我想從從3個數里選擇2個數,這3個數分別是{1,2,3},那么我選擇的結果就有三種,分別是{1,2},{1,3},{2,3},這個程序就能夠實現這樣的功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM