亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言回溯法 實現組合數 從N個數中選擇M個數

發布時間:2020-09-22 22:17:46 來源:腳本之家 閱讀:287 作者:Alger_jhun 欄目:編程語言

前言

在平時的算法的題目中,時常會遇到組合數相關的問題,暴力枚舉。在N個數中挑選M個數出來。利用for循環也可以處理,但是可拓展性不強,于是寫這個模板供以后參考。

兩個函數和全局變量可以直接用。

代碼:

#include<iostream>
#include<cstdio>
 
#define N 10    //被選擇的數目
#define M 5    //要選出來的數目
 
using namespace std;
int vis[N+1];    //標志,
int ans=0;    //含有的組合數 的數量
int num[M+1];    //選出來的數放在num數組里面
 
void solve() {        //在solve函數里面處理
	for(int i=1; i<M+1; i++)
		cout<<num[i]<<" ";
	cout<<endl;
}
 
void dfs(int index) {    //挑選的第index+1個數
	if(index == M) {
		solve();
		ans++;	
		return ;
	}
	for(int i=num[index]+1; i<N+1; i++) {
		if(!vis[i]) {
			vis[i] = 1;
			num[index+1] = i;
			dfs(index+1);
			vis[i] = 0;
		}
	}
}
 
int main()
{
	dfs(0);    //回溯開始
	cout<<endl<<ans;
	return 0;
}

C語言回溯法 實現組合數 從N個數中選擇M個數

可以發現利用回溯法挑選的有一個優勢在于,輸出的數組是經過排序的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莆田市| 万盛区| 普安县| 胶南市| 枞阳县| 慈利县| 怀安县| 城口县| 牙克石市| 临西县| 德清县| 永清县| 兖州市| 抚州市| 伊金霍洛旗| 菏泽市| 遂溪县| 黎城县| 涿鹿县| 柳河县| 灯塔市| 大庆市| 许昌县| 湖北省| 三明市| 文化| 澎湖县| 彭阳县| 凤冈县| 上思县| 双城市| 区。| 资中县| 大兴区| 建阳市| 包头市| 大新县| 乾安县| 邵东县| 秦安县| 桃园市|