布尔(bool)全排列

1、算法思路

真值组合是全排列问题,能用递归的思想解决,关键是怎么写出递归的程序
    由全排列思想可知,n个bool变量可以转化为后i个bool固定的值和前n-i个bool变量的全排列,例如:第n个为真,前面n-1个bool变量的全排列。由此递推,如果能解决n-1个bool变量的全排列问题,那么就能解决n个bool变量的全排列问题。



2、源代码

#include <iostream>

using namespace std;


void boolcombination(bool *bc,int sbegin,int send)   //布尔真值组合
{
    if(sbegin == send)  //递归到递归出口
    {
        for(int i = 0; i < send; i++)
            if(bc[i])
                cout << "TRUE ";
            else
                cout << "FALSE ";
        cout << endl;
    }
    else    //两种情况,第一种第i个为真,然后进行递归,第二种第i个为假,然后进行递归
    {
        bc[sbegin] = !bc[sbegin]; //求反
        boolcombination(bc,sbegin + 1,send);//递归求全排序
        bc[sbegin] = !bc[sbegin]; //求反
        boolcombination(bc,sbegin + 1,send);//递归求全排序
    }
}



int main()
{
    bool bc[100] = {true,false,true};
    boolcombination(bc,0,3);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值