bool AddSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix &Q) { if(M.mu!=N.mu||M.nu!=N.nu)return ERROR; int i,j,k=1; Q.mu=M.mu; Q.nu=M.nu; for(i=1,j=1; i<=M.tu&&j<=N.tu;) { if(M.data[i].i==N.data[j].i) { if(M.data[i].j==N.data[j].j) { Q.data[k].i=M.data[i].i; Q.data[k].j=M.data[i].j; Q.data[k].e=M.data[i].e+N.data[j].e; i++; j++; k++; } else if(M.data[i].j<N.data[j].j) { Q.data[k].i=M.data[i].i; Q.data[k].j=M.data[i].j; Q.data[k].e=M.data[i].e; k++; i++; } else if(M.data[i].j>N.data[j].j) { Q.data[k].i=N.data[j].i; Q.data[k].j=N.data[j].j; Q.data[k].e=N.data[j].e; k++; j++; } } else if(M.data[i].i<N.data[j].i) { Q.data[k].i=M.data[i].i; Q.data[k].j=M.data[i].j; Q.data[k].e=M.data[i].e; k++; i++; } else if(M.data[i].i>N.data[j].i) { Q.data[k].i=N.data[j].i; Q.data[k].j=N.data[j].j; Q.data[k].e=N.data[j].e; k++; j++; } } if(i!=M.tu+1) for(; i<=M.tu; i++) { Q.data[k].i=M.data[i].i; Q.data[k].j=M.data[i].j; Q.data[k].e=M.data[i].e; k++; } if(j!=N.tu+1) for(; j<=N.tu; j++) { Q.data[k].i=N.data[j].i; Q.data[k].j=N.data[j].j; Q.data[k].e=N.data[j].e; k++; } for(i=1,j=1; i<=Q.mu; i++) { Q.rpos[i]=j; while(Q.data[j].i==i && j<=Q.tu) j++; } return OK; }
时间: 2024-04-22 08:23:07 浏览: 19
这段代码是实现两个稀疏矩阵相加的操作,其中使用了三元组表示法。函数接收三个参数,分别为两个输入矩阵M和N,以及一个输出矩阵Q。在函数中,首先判断M和N的行数和列数是否相等,如果不相等则返回错误。然后通过三个循环依次遍历M和N中的每一个非零元素,并将相同位置的元素相加后存储到Q中。如果M和N中某一个矩阵已经遍历完,则将另一个矩阵中剩余的元素直接存入Q中。最后,通过一个循环计算Q中每一行的起始位置。函数返回OK表示操作成功,返回ERROR表示操作失败。
相关问题
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;
这段代码定义了一个函数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集合中。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)