尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Eulerian Number和Entringer Number对应排列方案的枚举

Eulerian Number和Entringer Number对应排列方案的枚举 Eulerian Number 介绍Eulerian NumberEntringer Number介绍Entringer NumberEulerian NumberA(n,m)对应的所有排列方案(即1,2,—n形成的所有排列中满足恰有m个数大于前一个数的排列方案)的枚举程序#includeiostream#includevectorusingnamespacestd;size_t M0;size_t N1;voidfindEulerianNumber(vectorsize_tEN,vectorboolused,size_t index,size_t m){if(indexEN.size()){if(mM){for(size_t i0;iEN.size();i){coutEN[i]1 ;}coutendl;}return;}for(size_t runEN[index-1];run!0;){--run;if(used[run]false){EN[index]run;used[run]true;findEulerianNumber(EN,used,index1,m);used[run]false;}}if(m!M){for(size_t runEN[index-1]1;runN;run){if(used[run]false){EN[index]run;used[run]true;findEulerianNumber(EN,used,index1,m1);used[run]false;}}}}intmain(){vectorsize_tEN(N);vectorboolused(N,false);for(size_t i0;iN;i){EN[0]i;used[i]true;findEulerianNumber(EN,used,1,0);used[i]false;}return0;}Entringer NumberE(n,k)对应的所有排列方案(即以k开头满足大于等于2的下标中偶数下标对应的数小于前一个数而奇数下标对应的数大于前一个数的所有0,1,—,n构成的排列的集合)的枚举程序如下#includeiostream#includevectorusingnamespacestd;voidfindEntringerNumber(vectorsize_tEN,vectorboolused,size_t index,boolodd_or_even,constsize_t N){if(indexEN.size()){for(size_t i0;iEN.size();i){coutEN[i] ;}coutendl;return;}if(odd_or_evenfalse){for(size_t runEN[index-1];run!0;){--run;if(used[run]false){EN[index]run;used[run]true;findEntringerNumber(EN,used,index1,true,N);used[run]false;}}}else{for(size_t runEN[index-1]1;runN;run){if(used[run]false){EN[index]run;used[run]true;findEntringerNumber(EN,used,index1,false,N);used[run]false;}}}}intmain(){constsize_t K1;//范围1-Nconstsize_t N1;vectorsize_tEN(N1);vectorboolused(N1,false);EN[0]K;used[K]true;findEntringerNumber(EN,used,1,false,N);return0;}
返回列表