最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

在平時(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;
}

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

相關(guān)文章

最新評(píng)論

武平县| 湖北省| 榆林市| 莱州市| 砀山县| 临洮县| 浑源县| 罗甸县| 连云港市| 通海县| 河曲县| 时尚| 翁源县| 綦江县| 杭锦旗| 祥云县| 舒兰市| 武功县| 通州市| 锦州市| 隆子县| 南雄市| 惠来县| 凤山县| 泰来县| 阳山县| 临安市| 桑植县| 绥德县| 渭源县| 仙游县| 泊头市| 长宁区| 额尔古纳市| 普陀区| 盘山县| 甘肃省| 宕昌县| 桐乡市| 台州市| 西城区|