C++根据条件生成两个位置序列
元<元<整>类 G>构 分序列{//类版本,不搞那么难.
元<整 M,整 F,整...I>静 常式 动 动作(){
//返回两个,都是位置.
常式 整 N=型长...(I);常式 整 K=M-N-1;
如 常式(G<F>::动作()){//满足条件
如 常式(!N)//0个,最后1个.
中 双{序列<K>(),序列<>()};
异{//第1位为位置
动 t=动作<M,I...>();
动 e=连序<K>(t.第一);//k是变化的
中 双{e,t.第二};
}//就是这样,F放前.t放后面.
}异{//不满足G,放后面.
如 常式(!N)
中 双{序列<>(),序列<K>()};
异{
动 t=动作<M,I...>();
动 e=连序<K>(t.第二);
中 双{t.第一,e};
}
}//加上过滤.
}
};//还是不行,向量[I],这里
//生成符合条件的序列.符合为1,不符合为0
元<元<整>类 G,整...J>常式 动 分二序(){
常式 整 M=型长...(J);
中 分序列<G>::元 动作<M,J...>();
}//包装一下.为满足和不满足条件的位置.
浙公网安备 33010602011771号