浙大ACM1002 为什么一直编译异常。

浙大ACM1002 为什么一直编译错误。。。。
#include<stdio.h>
#include<stdbool.h>
void fun (int n,int depth);
bool fun_find(int i,int j,int n); 
int num=0;
int max=0;
char map[4][4];
int main(void){

int n;
scanf("%d",&n);
for(int i=0;i<n*n;i++)
scanf(" %c",&map[i/n][i%n]);
fun(n,0);
printf("%d",max);
return 0;


}
void fun (int n,int depth){
if(num>max)max=num;
if(depth>=n*n)return ;
int i=depth/n,j=depth%n;
if(fun_find(i,j,n))
{
map[i][j]='o';
num+=1;
fun(n,depth+1);
map[i][j]='.';
num-=1;
}
fun(n,depth+1);



}
bool fun_find(int i,int j,int n){
if(map[i][j]!='.')
return false;
for(int a=i-1;a>=0;a--){
if(map[a][j]=='o')
return false;
if(map[a][j]=='x')
break;
}

for(int c=j-1;c>=0;c--){
if(map[i][c]=='o')
return false;
if(map[i][c]=='x')
break;
}

return true;

}
acm c

------解决方案--------------------
编译错误,按提示修改
------解决方案--------------------
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

------解决方案--------------------
LZ程序要选C++编译。
------解决方案--------------------
看到底下标签是C就觉得那啥啥了,选C++吧少年