个人想到的判断多个条件是否成立且判断其组合方式的算法。如有雷同,那太好了,记得在评论区告诉我。
这个算法是我高二写熵增模拟时判断粒子是否在长方体空间(x1-x2,y1-y2,z1-z2)中。
抽象一下,假定有ABCDEF六个判断场景,需要区分仅ADF成立和仅EF成立等多种情况,且每种情况都要对应不同的下一步程序。但是为了便于理解,还是以上面熵增判断位置的案例来讲述。
要判断粒子(x0,y0,z0)是否在(x1-x2,y1-y2,z1-z2)中就要判断:
A:x0与x1的大小关系。
B:x0与x2的大小关系。
C:y0与y1的大小关系。
D:y0与y2的大小关系。
E:z0与z1的大小关系。
F:z0与z2的大小关系。
现在阐述核心原理。很简单,现在有这么几个数2,3,7,11,13,15,现在其中一些数加在一起,等于5,好了那么肯定是2和3加在一起才能等于5,5=2+3。要是其中一些数加在一起,等于14,那肯定是3和11两个数,14=3+11,这就是基本原理,你,懂了吗?
如果有些不明白,那么请看以下代码,
sum=0;
//加法预判断
if(x0<x1)
{
sum=sum+2;
}
if(x0<x2)
{
sum=sum+3;
}
if(y0<y1)
{
sum=sum+7;
}
if(y0<y2)
{
sum=sum+11;
}
if(z0<z1)
{
sum=sum+13;
}
if(z0<z2)
{
sum=sum+15;
}
//真正的判断
if(sum=29) //29=3+11+15
{
//粒子在指定空间中。
}
当然,这个案例没有发挥出这个算法更厉害的地方,因为只需要知道两种情况,所以那六个数完全可以是1,1,1,1,1,1,最后sum=6就行了。但是还有一个案例,就是高考语文文言文断句,一句话每个字之间都可以断句,每一处断句的得分还不一样,这就比较复杂了,非常适合用质数加法判断法来机器评分。