运行以下代码时遇到无限循环。在由块包围的网格内部,启动预定义的正方形,该实现运行。如果需要访问,则将正方形标记为1,如果已访问则将其标记为2。我似乎无法找到解决方案,我会喜欢一些有用的提示。
one_count=1;
while(one_count>0){
for(int i=0;i<24;i++){
for(int c=0;c<80;c++){
if(create[i][c]=='1'){
if(create[i-1][c]==' '){
create[i-1][c]='1';
}
if(create[i+1][c]==' '){
create[i+1][c]='1';
}
if(create[i][c-1]==' '){
create[i][c-1]='1';
}
if(create[i][c+1]==' '){
create[i][c+1]='1';
}
create[i][c]='2';
}
}
}
one_count=0;
for(int i=0;i<24;i++){
for(int c=0;c<80;c++){
if(create[i][c]=='1'){
one_count++;
}
}
}
}
答案 0 :(得分:0)
我在随机数据上运行你的代码(边缘为'X')。我没有遇到任何循环。
也没有理由遇到问题。每次迭代都会检查每个像素,并确保所有'1'都变为'2'。没有办法回来,不可能循环。
也许您可以提供有关该计划行为的更多信息。
<强>顺便说一句强>: 你的代码中有一个小怪癖。洪水填充到底部和右侧非常快,因为您在周期中已经编写了地图(难以解释 - &gt;示例)
所以在第一个周期之后你只能创建[2] [2] =='2',但是右边和下面的所有内容也是=='2'。
目前它不会破坏您的代码,但如果您更改某些内容,可能会导致意外结果。