手机网站 底部菜单,西安学网站开发哪边好,塘沽网红餐厅,网线制作公开课这一题的大意是说给出一个三维的矩阵#xff0c;让我们找上下左右前后相互连通#xff0c;面积大于等于T的数量#xff0c;统计最终的面积。 看懂题目后实际上还是比较好写的。 我一开始无脑DFS搜索#xff0c;找连通块 但写好代码后发现最后两个测试点段错误 DFS代码如下让我们找上下左右前后相互连通面积大于等于T的数量统计最终的面积。看懂题目后实际上还是比较好写的。我一开始无脑DFS搜索找连通块但写好代码后发现最后两个测试点段错误DFS代码如下#includebits/stdc.h#includeiostreamusingnamespacestd;intM;intN;intL;//L是一个大脑中片的数量intT;//M,N是每一个片的大小面积//最大是1286*128//T是临界值如果一个量连接核心是少于T那么这个核心一定不被数//每一个玻片是由01构成 1代表stroke// 0代表正常// 因为玻片的厚度是不断的我们仅仅不得不数1的数量去得到量// 然后也许几个分开的核心区域在大脑中并且仅仅这些量是不少于T// 两个轴呗连接因此属于相同的区域如果它们分享相同的方面intt[80][1350][130];intans;boolflag[80][1305][135];voiddfs(intx,inty,intz,intcnt){if(t[x][y][z]1){cnt;}flag[x][y][z]1;if(x1LyMzN){if(t[x1][y][z]1flag[x1][y][z]0){dfs(x1,y,z,cnt);}}if(xLy1MzN){if(t[x][y1][z]1flag[x][y1][z]0){dfs(x,y1,z,cnt);}}if(xLyMz1N){if(t[x][y][z1]1flag[x][y][z1]0){dfs(x,y,z1,cnt);}}if(x-10yMzN){if(t[x-1][y][z]1flag[x-1][y][z]0){dfs(x-1,y,z,cnt);}}if(xLy-10zN){if(t[x][y-1][z]1flag[x][y-1][z]0){dfs(x,y-1,z,cnt);}}if(xLyMz-10){if(t[x][y][z-1]1flag[x][y][z-1]0){dfs(x,y,z-1,cnt);}}}intmain(){cinMNLT;for(inti0;iL;i){for(intj0;jM;j){for(intk0;kN;k){intx;cinx;t[i][j][k]x;}}}for(inti0;iL;i){for(intj0;jM;j){for(intk0;kN;k){if(t[i][j][k]1flag[i][j][k]0){intcnt0;dfs(i,j,k,cnt);if(cntT){anscnt;}}}}}coutansendl;return0;}原因是数据范围过大dfs递归栈无法开那么大于是就段错误因此这一题应该采用BFS也就是用一个队列来保存这样就不会递归爆栈了思路很简单完整代码如下#includebits/stdc.h#includeiostreamusingnamespacestd;intM;intN;intL;//L是一个大脑中片的数量intT;//M,N是每一个片的大小面积//最大是1286*128//T是临界值如果一个量连接核心是少于T那么这个核心一定不被数//每一个玻片是由01构成 1代表stroke// 0代表正常// 因为玻片的厚度是不断的我们仅仅不得不数1的数量去得到量// 然后也许几个分开的核心区域在大脑中并且仅仅这些量是不少于T// 两个轴呗连接因此属于相同的区域如果它们分享相同的方面intt[80][1350][130];intans;boolflag[80][1305][135];voiddfs(intx,inty,intz,intcnt){if(t[x][y][z]1){cnt;}flag[x][y][z]1;if(x1LyMzN){if(t[x1][y][z]1flag[x1][y][z]0){dfs(x1,y,z,cnt);}}if(xLy1MzN){if(t[x][y1][z]1flag[x][y1][z]0){dfs(x,y1,z,cnt);}}if(xLyMz1N){if(t[x][y][z1]1flag[x][y][z1]0){dfs(x,y,z1,cnt);}}if(x-10yMzN){if(t[x-1][y][z]1flag[x-1][y][z]0){dfs(x-1,y,z,cnt);}}if(xLy-10zN){if(t[x][y-1][z]1flag[x][y-1][z]0){dfs(x,y-1,z,cnt);}}if(xLyMz-10){if(t[x][y][z-1]1flag[x][y][z-1]0){dfs(x,y,z-1,cnt);}}}intmain(){cinMNLT;for(inti0;iL;i){for(intj0;jM;j){for(intk0;kN;k){intx;cinx;t[i][j][k]x;}}}for(inti0;iL;i){for(intj0;jM;j){for(intk0;kN;k){if(t[i][j][k]1flag[i][j][k]0){intcnt0;dfs(i,j,k,cnt);if(cntT){anscnt;}}}}}coutansendl;return0;}