gpt4 book ai didi

c++ - 为什么这段代码会无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:27 25 4
gpt4 key购买 nike

我正在尝试测试扫雷游戏的许多测试用例它会导致无限循环,我没有得到输出

#include<bits/stdc++.h>
using namespace std;

int main(){
int n,m;
cin>>n>>m ;

//cout<<"bug1";
char grid[n+2][m+2] ;
string numbers="0123456789" ;
memset(grid,'0',sizeof grid);

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>grid[i][j];

//cout<<"bug2";


for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]!='*'){
int counter=0;
for(int ii=i-1;ii<i+2;ii++){
for(int jj=j-1;j<j+2;jj++){
if(ii>=0 && jj>=0 && grid[ii][jj]=='*')
counter++;
}
}
grid[i][j]=numbers[counter];
}
}
}

for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<grid[i][j] ;
}
cout<<endl ;
}


return 0;
}

我试试这个测试用例

enter image description here

它会导致无限循环,所以...解决方案是什么?

最佳答案

j<j+2 // in for(int jj=j-1;j<j+2;jj++){

始终为真,结果无限循环。

考虑到您对变量的选择,使用 real 变量,如 counttotal 等在这里是有意义的:

i,n,j,m,ii,jj // No wonder if someone is not confused with this.

仅举几例。

关于c++ - 为什么这段代码会无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com