国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C語(yǔ)言回溯法 實(shí)現(xiàn)組合數(shù) 從N個(gè)數(shù)中選擇M個(gè)數(shù)

2020-05-23 13:30:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

在平時(shí)的算法的題目中,時(shí)常會(huì)遇到組合數(shù)相關(guān)的問(wèn)題,暴力枚舉。在N個(gè)數(shù)中挑選M個(gè)數(shù)出來(lái)。利用for循環(huán)也可以處理,但是可拓展性不強(qiáng),于是寫(xiě)這個(gè)模板供以后參考。

兩個(gè)函數(shù)和全局變量可以直接用。

代碼:

#include<iostream>#include<cstdio> #define N 10    //被選擇的數(shù)目#define M 5    //要選出來(lái)的數(shù)目 using namespace std;int vis[N+1];    //標(biāo)志,int ans=0;    //含有的組合數(shù) 的數(shù)量int num[M+1];    //選出來(lái)的數(shù)放在num數(shù)組里面 void solve() {        //在solve函數(shù)里面處理	for(int i=1; i<M+1; i++)		cout<<num[i]<<" ";	cout<<endl;} void dfs(int index) {    //挑選的第index+1個(gè)數(shù)	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);    //回溯開(kāi)始	cout<<endl<<ans;	return 0;}

C語(yǔ)言,回溯法,組合數(shù)

可以發(fā)現(xiàn)利用回溯法挑選的有一個(gè)優(yōu)勢(shì)在于,輸出的數(shù)組是經(jīng)過(guò)排序的。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建德市| 泸州市| 香港| 祥云县| 深水埗区| 祁门县| 清涧县| 会东县| 台北市| 石屏县| 漠河县| 安国市| 万荣县| 长乐市| 承德县| 岳池县| 双江| 莱州市| 嘉鱼县| 江山市| 西充县| 东阳市| 宿州市| 绥中县| 郎溪县| 浦县| 武乡县| 吴堡县| 黔江区| 辉县市| 定南县| 故城县| 玉溪市| 中牟县| 兰坪| 读书| 延庆县| 土默特左旗| 凤山市| 陆良县| 绥江县|