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

首頁 > 編程 > C > 正文

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

2020-01-26 13:39:45
字體:
供稿:網(wǎng)友

前言

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

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

代碼:

#include<iostream>#include<cstdio> #define N 10    //被選擇的數(shù)目#define M 5    //要選出來的數(shù)目 using namespace std;int vis[N+1];    //標(biāo)志,int ans=0;    //含有的組合數(shù) 的數(shù)量int num[M+1];    //選出來的數(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個數(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);    //回溯開始	cout<<endl<<ans;	return 0;}

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 维西| 白水县| 安远县| 嵊州市| 湘潭县| 道孚县| 阿拉善盟| 樟树市| 苍溪县| 广宁县| 东兴市| 康乐县| 庆云县| 图木舒克市| 荆门市| 静海县| 安远县| 霸州市| 亳州市| 沾化县| 勃利县| 鹰潭市| 木里| 浦县| 英吉沙县| 天气| 洪雅县| 桦川县| 莲花县| 宜川县| 新乡市| 历史| 华容县| 霍城县| 山东省| 滦平县| 灵山县| 吉水县| 赞皇县| 盱眙县| 毕节市|