c++多极变
空 加一(极&a,整&m,整 n){
如(a)中;如(!n){a=1;中;}m++;
}//如前面停止了,中m,当前n为0,中m,否则加1个
空 减一(极&a,整&m,整 n){
如(a)中;如(!n){a=1;中;}m--;
}//如前面停止了,中m,当前n为0,中m,否则减1个
元<极 M,型名 T,整...I>整 多级变(T&t,序列<I...>){
极 i=0;整 m=0;
如(M){
(加一(i,m,取<I>(t)),...);
}异{
常式 整 N=型长...(I);m=N;
(减一(i,m,取<N-1-I>(t)),...);
}//从后面减.后面为整,则减
中 m;
}//其实这个多级变,就是取1前位数,或(N-取后1位数)
元<极 I,型名...T>整 多级变(T...o){
元组 t{o...};中 多级变<I>(t,转序<T...>());
}
空 主(){//1为向上,2为向下
打印(多级变<1>(1,1,1,1,0,0));
打印(多级变<0>(1,0,1,1,0,0,1,1));
}
再改了下.不能再提了:
元<极 I>空 加减(极&a,整&m,整 n){
如(a)中;如(!n){a=1;中;}
如 常式(I)m++;异 m--;
}//如前面停止了,中m,当前n为0,中m,否则加减1个
元<极 M,型名 T,整...I>整 多级变(T&t,序列<I...>){
极 i=0;整 m=0;
如 常式(M){
(加减<M>(i,m,取<I>(t)),...);
}异{//I与`N-1-I`无法提取了,
常式 整 N=型长...(I);m=N;
(加减<M>(i,m,取<N-1-I>(t)),...);
}//从后面减.后面为整,则减
中 m;
}//其实这个多级变,就是取1前位数,或(N-取后1位数)
浙公网安备 33010602011771号