思路1:通过递归利用类似树状图分支列举所有情况
pot用于记录到第几次,当列举到第N次时判断是否有连续正面的情况
否时即输出
(用int型数组更简单,不用进行0/‘0’和1/‘1’之间的转换
但懒得改了)
#includeint count,N; void coin(int pot,char str[]) { if(pot==N) { //判断是否连续正面 for(int i=0;i 思路2:位运算,0/1表示正好对应二进制的表示方法
抛n次的所有情况可用n位二进制数表示,转化为十进制即0~2的n次方-1
判断是否有连续情况,即判断是否有连续的1:采用错位与运算,当无时得到的运算结果应为0
最后将十进制数转化为二进制输出
#include#include #include int main() { int k; scanf("%d",&k); for(int i=0;i =0;n--) printf("%d",num[n]); printf("n"); } } return 0; }



