C++分序列终极化简.

< B, K>常式  双交换(){
     常式(B){//满足条件
        {序列<K>(),序列<>()};
    }{
        {序列<>(),序列<K>()};
    }
}
< B, K,...I,...J>
常式  双交换(<序列<I...>,序列<J...>>&t){
     常式(B){//满足条件,加在第一个.
        {连序<K>(t.第一),t.第二};
    }{//不满足,加在第二个.
        {t.第一,连序<K>(t.第二)};
    }
}
<<> G> 分序列{//类版本,不搞那么难.
    < K,...I> 常式  序号(){
        //返回两个,都是序号.K为第一.
        常式  N=型长...(I);
        常式  B=G<K>::动作();
         常式(!N) 双交换<B,K>();
        {//第1位为序号
             t=序号<I...>();
             双交换<B,K>(t);
        }
    }//既要序号,还要位置.
};//还是不行,向量[I],这里
//用两个(位置,序号)来表达,而非(位置,序号)对,
//因为这要的话,要两个`G判断构`来表示.
<<> G,...J>常式  分二序(){
     分序列<G>:: 序号<J...>();
}//
posted @ 2021-12-20 10:46  zjh6  阅读(13)  评论(0)    收藏  举报  来源