我有一点逻辑问题,有一天我想解决!!假设你有4个变量,我将它们称为a,b,c和d . 现在基于某些逻辑给出以下条件 .
该计划通过:
-
如果a和c都被填充
-
如果a和d都被填充
-
如果b和c都填满了
-
如果b和d都填满了
-
如果c和d都填满了
程序失败:
-
如果只有a填充
-
如果只填充b
-
如果只填充了c
-
如果只填充了d
-
如果a和b都被填充
因此,如果您填写一个变量,您将被迫填写更多 . 如果您没有填写任何变量,则无需执行任何操作 .
为了保持简单,我说1等于填充,0等于未填充 . 我的代码片段工作不正常,因为如果我说只有d填充它会回复说这没关系 . 但它不应该工作,因为只有d是失败 .
任何想法都是我能做的?也许我对此的思考方式不正确?请记住,0和1只是为了保持这一点,所以添加一个总和无济于事!
这是我的代码:
a = 0;
b = 0;
c = 0;
d = 1;
if a ~=0 || b ~=0 || c ~=0 || d ~=0
if ~(a~=0 || b~=0 && c~=0 || d~=0 )
works = 1;
else
no = 1;
end
end
谢谢你的阅读!
2 回答
如果您希望代码更具可读性,可以使用方法来执行逻辑,最简单的方法就是转换逻辑 .
当问题被标记为MATLAB时,我也会给你一个MATLAB解决方案 . 基本上你添加一个总和的想法只是要走的路,只需先将变量转换为二进制,这是用
logical
完成的 . 因此,可以使用检查失败第一个条件检查已填充的数量,第二个条件检查
a
和b
是否都已设置 .应该注意,有些情况满足通过和失败条件(例如所有变量集) . 上面的解决方案是贪婪的失败 . 通过贪婪的解决方案(正如Cris Luengo在评论中提出的那样)