编译错误

P1767 家族

@[2009niuniu](/user/997261) ```cpp void f(int fx,int fy); { m[fx][fy]=0; for(int k=0;k<4;k++) { if(m[fx+x[k]],m[fy+y[k]]==-1) f([fx+x[k]],m[fy+y[k]]); } } ``` 多了个分号。
by xiaoshumiao @ 2023-12-17 18:56:55


还是没过 ``` #include<bits/stdc++.h> using namespace std; int n; int m[205][105]; int i,j; string a; int mymax; int ans; int x[4]={1,1,-1,-1}; int y[4]={1,-1,1,-1}; void f(int fx,int fy) { m[fx][fy]=0; for(int k=0;k<4;k++) { if(m[fx+x[k]][fy+y[k]]==-1) f([fx+x[k]],[fy+y[k]]); } } int main() { cin>>n; for(i=1;i<=n;i++) { cin>>a; for(j=1;j<=a.length();j++) { if(a[j-1]!='*'&&a[j-1]!=' ') m[j][i]=-1; } mymax=max(mymax,a.length()); } for(i=1;i<=mymax;i++) { for(j=1;j<=n;j++) { if(m[i][j]==-1) { ans++; f(i,j); } } } cout<<ans; } ``` @[xiaoshumiao](/user/1008513)
by 2009niuniu @ 2023-12-17 19:01:54


@[2009niuniu](/user/997261) ```cpp if(m[fx+x[k]][fy+y[k]]==-1) f([fx+x[k]],[fy+y[k]]); ``` ```cpp mymax=max(mymax,a.length()); ``` 以上两处报错。第二处似乎是 lengh 不能用 max。
by xiaoshumiao @ 2023-12-17 19:06:32


@[xiaoshumiao](/user/1008513) 那用什么
by 2009niuniu @ 2023-12-17 19:11:23


@[2009niuniu](/user/997261) 你可以用一个变量来存,再做 max。
by xiaoshumiao @ 2023-12-17 19:14:46


@[2009niuniu](/user/997261) 提前把length弄成变量。`int len = a.length()`这样,因为a.length()是无符号数mymax不是,max只能比较同样类型的,所以可以将length强转成有符号。
by NFGase @ 2023-12-17 19:14:53


|