国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 专栏| 曲麻莱县| 黎川县| 苍溪县| 淮滨县| 衡水市| 彭阳县| 汤阴县| 金乡县| 铁力市| 大庆市| 嘉峪关市| 东乡县| 称多县| 天祝| 宜阳县| 九江市| 万安县| 什邡市| 康定县| 铅山县| 宣化县| 东光县| 化州市| 延寿县| 西乌| 洛扎县| 中牟县| 长寿区| 五寨县| 任丘市| 府谷县| 公安县| 永年县| 沁阳市| 横峰县| 庆安县| 依安县| 六盘水市| 贵定县| 宁陵县|