全文预览

八数码问题求解--实验报告

上传者:梦溪 |  格式:doc  |  页数:16 |  大小:358KB

文档介绍
stance = 0; bool flag = false; for(int i= 0;i< ROW; i++) for (int j= 0;j< COL; j++) for (int k= 0;k< ROW; k++) { for (int l= 0;l< COL; l++) { if (node.digit[i][j] == digit[k][l]) { distance += abs(i - k)+ abs(j - l); flag = true; break; } else flag = false; } if (flag) break; } return distance; } int MinDistance(int a, int b) { return (a<b?a: b); } void ProcessNode(int index) { int x, y; bool flag; for (int i= 0;i< ROW; i++) { for (int j= 0;j< COL; j++) { if (node_v[index].digit[i][j] == 0) {x =i; y= j; flag = true; break; } else flag = false; } if(flag) break; } Node node_up; Assign(node_up, index);// 向上扩展的节点 int dist_up = MAXDISTANCE; if (x> 0){ Swap(node_up.digit[x][y], node_up.digit[x - 1][y]); if (isExpandable(node_up)) { dist_up = Distance(node_up, dest.digit); node_up.index = index;

收藏

分享

举报
下载此文档