做作业的时候遇到需要遍历真值表以判断是否有值为真(T)的情况.
基本思路:
- 将真值表的每一行看作一个二进制数,逐行分别为上一行加一.
代码如下:
//初始化所有位置0
for(int i = 0;i < len;i++)
{
assignations[i] = false;
}
//如果第一位不为1,则表示遍历没有结束
while(assignations[0] != true)
{
// 如果最后一位为0,则直接加1
if(assignations[len - 1] == false)
{
assignations[len - 1] = true;
}
else
/* 如果最后一位为1,则加一需要进位,即将之前所有位左移1位,末位补0*/
{
for(int j = 0;j < (len - 1);j++)
{
/* 不需要移动所有位,从左到右找到为1的首位即可*/
if(assignations[j + 1] == false)continue;
assignations[j] = assignations[j + 1];
}
assignations[j] = false;
}
}
//最后再补上所有为都为1的情况
assignations[len - 1] = true;
附
最后把想要执行的操作插入过程中就好了.