数据结构学习笔记(一),输出n个布尔变量所有真值组合

假设有n个布尔变量,输出所有可能的真值组合,例如,如果n = 2,有四种可能:<true,true>,<true,false>,<false,true>,<false,false>.编写C语言的函数加以实现。这里数组大小只开了10,使用std::boolalpha直接输出bool类型的true 和 false。</span>
递归版:
#include <iostream>
#include <memory> 
bool a[10];

void perm(bool* array, int index, int n)
{
	if (index  == n)
	{
		std::cout << "<";
		std::cout << std::boolalpha << array[0];
		if (n > 1)
		{
			for (int i = 1; i < n; ++i)
			std::cout << "," << std::boolalpha << array[i];
		}
		std::cout << ">\n";
		return;
	}
	else
	{
			int j = index;
			perm(array, j+1, n);
			array[j] = !array[j];
			perm(array, j+1, n); 
	}
}
int main()
{
	int n;
	while (std::cin >> n)
	{
		memset(a, true, sizeof(a));
		while (n <= 0 || n > 9)
		{
			std::cout << "num should between 0 and 9!!\ninput again:";
			std::cin >> n;
		}
		perm(a, 0, n);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值