bool IsLegal(MCNode tNode) { if (tNode.m >= 0 && tNode.m <= 3 && tNode.c >= 0 && tNode.c <= 3) { if ((tNode.m == tNode.c) || (tNode.m == 3) || (tNode.m == 0)) return true; else return false; } else return false;
时间: 2024-04-02 17:32:19 浏览: 15
这段代码定义了一个函数IsLegal,用于判断当前的状态tNode是否合法。具体实现是通过判断传教士和野人的数目是否在[0,3]之间,同时判断传教士与野人数目是否合法。其中,如果传教士和野人数目相等,则合法;如果传教士数目为0或3,则合法;否则为非法状态。如果tNode不在合法的传教士和野人数目范围内,则也认为是非法状态。
相关问题
bool operator==(MCNode m1, MCNode m2) { if (m1.m == m2.m && m1.c == m2.c && m1.b == m2.b) return true; else return false; }
这段代码定义了一个运算符重载函数operator==,用于判断两个MCNode类型的状态是否相等。具体实现是通过判断两个状态的传教士数目、野人数目和船状态是否都相等来判断两个状态是否相等。如果都相等则返回true,否则返回false。这个运算符重载函数可以用于在搜索过程中比较两个状态是否相等,便于判断是否将某个状态加入到closed集合中。
bool check(save pic) { if((pic.x<n)&&(pic.y<m)) if((pic.x>=0)&&(pic.y>=0)) return !vis[pic]; return 0; }
这段代码是一个函数,名为`check`,接受一个`save pic`参数,返回一个布尔值。
函数首先检查`pic`的`x`是否小于`n`且`y`小于`m`,如果满足条件,则继续检查`x`是否大于等于0且`y`大于等于0。如果这两个条件也满足,则进一步判断`vis[pic]`的取反值(即`!vis[pic]`)是否为真。如果以上所有条件都满足,则返回真,否则返回假。
这段代码可能是用来检查一个坐标是否在指定范围内且未被访问过的一个标记数组(`vis`)中的元素。具体的用途还需要结合其他代码来确定。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)