求大神,总有一堆0.

P2670 [NOIP2015 普及组] 扫雷游戏

#4ac,其他wa
by ⚡GG⚡ @ 2018-02-22 13:30:29


有一行代码窜了 ```cpp #include<bits/stdc++.h> using namespace std; char a[110][110]={'?'},d[110][110]; int main() { int n,m,x,y,i,j,dql=0,k; cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>a[i][j]; } for(i=1;i<=n;i++) for(j=1;j<=m;j++) { if(a[i][j]=='*') d[i][j]=a[i][j]; else if(a[i][j]=='?') { if(a[i-1][j-1]=='*'&&i-1>0&&j-1>0) dql++; if(a[i-1][j]=='*'&&i-1>0) dql++; if(a[i-1][j+1]=='*'&&i-1>0&&j+1<m) dql++; if(a[i][j+1]=='*'&&j+1<m) dql++; if(a[i+1][j+1]=='*'&&i+1<n&&j+1<m) dql++; if(a[i+1][j]=='*'&&i+1<n) dql++; if(a[i+1][j-1]=='*'&&i+1<n&&j-1>m) dql++; if(a[i-1][j]=='*'&&i-1>0) dql++;//←←←←←←←← } // ↑ d[i][j]=dql+'0';//→→→→→→ dql=0; } for(i=1;i<=n;i++) { for(j=1;j<=m;j++) cout<<d[i][j]; cout<<endl; } return 0; } ```
by namespace_std @ 2018-02-22 13:36:19


将line 37移至line 35后面就好了
by namespace_std @ 2018-02-22 13:37:06


谢大神
by ⚡GG⚡ @ 2018-02-22 13:40:11


另外Line 34和Line 22有重复
by namespace_std @ 2018-02-22 13:52:07


你的i+1<n,j+1<m,i-1>0,j-1>0就不用了(你已经把整个char数组初始化了,而且在1<=i,j<=100的情况下i+1,j+1,i-1,j-1都一定在0~101之间,一定不会溢出),如果用的话,就一定是<=n而不是<n
by namespace_std @ 2018-02-22 13:58:06


这样就行 ```cpp #include<bits/stdc++.h> using namespace std; char a[110][110],d[110][110]; int main() { int n,m,x,y,i,j,dql=0,k; cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { if(a[i][j]=='*') d[i][j]=a[i][j]; else if(a[i][j]=='?') { if(a[i-1][j-1]=='*') dql++; if(a[i-1][j]=='*') dql++; if(a[i-1][j+1]=='*') dql++; if(a[i][j+1]=='*') dql++; if(a[i+1][j+1]=='*') dql++; if(a[i+1][j]=='*') dql++; if(a[i+1][j-1]=='*') dql++; if(a[i][j-1]=='*') dql++; d[i][j]=dql+'0'; } dql=0; } for(i=1;i<=n;i++) { for(j=1;j<=m;j++) cout<<d[i][j]; cout<<endl; } return 0; } ```
by namespace_std @ 2018-02-22 14:00:08


多谢多谢!!
by ⚡GG⚡ @ 2018-02-23 16:51:53


对了,我少了哪组?
by ⚡GG⚡ @ 2018-02-23 16:57:09


是不是 a[i][j-1] ?
by ⚡GG⚡ @ 2018-02-23 16:59:30


| 下一页