@[陈铭](/space/show?uid=8595) 把你的读入贴上来?
by Prurite @ 2018-10-22 16:18:44
```cpp
#define gc() getchar()
template <class T> inline void read(T&sum){
bool f=0;char ch=gc();sum=0;
while(!isdigit(ch)){if(ch=='-')f=1;ch=gc();}
while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=gc();}
if(f)sum=-sum;
}
```
by FLASH_CM @ 2018-10-22 16:21:15
@[星烁晶熠辉](/space/show?uid=54160)
by FLASH_CM @ 2018-10-22 16:21:26
你这个有必要写template <class T>吗
反正都只能读整数
by __世界第一弱__ @ 2018-10-22 16:25:39
@[陈铭](/space/show?uid=8595) 你这个是在一直读直到读到第一个不是数字的数截止。换而言之,如输入
```
05201
```
应该被分割为
```
0 5 2 0 1
```
五个数,但是你直接读成了
```
5201
```
一个数。
请用 `getchar( )` 读入。
by Prurite @ 2018-10-22 16:50:12
附上参考读入代码
```
for ( int i = 1; i <= n; i++ )
{
getchar( ); // 吞掉换行
for ( int j = 1; j <= m; j++ )
a[i][j] = getchar( ) - '0';
}
```
by Prurite @ 2018-10-22 16:51:43
@[陈铭](/space/show?uid=8595) 然后代码过不了请先查自己的错,不要动不动就说“数据有问题”。
## 不要怀疑一个900+人通过的题目
by Prurite @ 2018-10-22 16:52:41
@[星烁晶熠辉](/space/show?uid=54160) 我在读字符的时候并没有用快读啊,要不大佬帮忙看一下我的代码
```cpp
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ri register int
#define gc() getchar()
template <class T> inline void read(T&sum){
bool f=0;char ch=gc();sum=0;
while(!isdigit(ch)){if(ch=='-')f=1;ch=gc();}
while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=gc();}
if(f)sum=-sum;
}
int n,m,num[1010][1010],ans;
int main(){
int i,j,k;
char ch;
read(n);read(m);
for(i=1;i<=n;i=-~i){
for(j=1;j<=m;j=-~j){
ch=gc();
num[i][j]=ch-'0';
}
scanf("\n");
}
for(i=1;i<=n;i=-~i)
for(j=1;j<=m;j=-~j){
if(num[i][j]>0)ans+=2;
if(num[i][j]>num[i+1][j])ans+=num[i][j]-num[i+1][j];
if(num[i][j]>num[i-1][j])ans+=num[i][j]-num[i-1][j];
if(num[i][j]>num[i][j+1])ans+=num[i][j]-num[i][j+1];
if(num[i][j]>num[i][j-1])ans+=num[i][j]-num[i][j-1];
}
printf("%d",ans);
return 0;
}
```
by FLASH_CM @ 2018-10-23 12:50:06
@[陈铭](/space/show?uid=8595) 注意看我的代码:你在读入字符的时候**没有处理换行符**。
by Prurite @ 2018-10-23 14:56:25
@[Prurite](/space/show?uid=54160) 他有`scanf("\n")`了。。。
by Sya_Resory @ 2019-08-31 13:08:14