/*回溯法——深度优先搜索 时间复杂度为n方 */ #include <stdio.h> #define max 1000 int map[max][max]; int vis[max][max];//记录i,j位置是否遍历过 int m,n,x,y,num=0; int dfs(int x,int y){ //深度优先算法 int i,nx,ny; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; for (i=0;i<4;i++) { nx=x+dx[i]; ny=y+dy[i]; if (nx>=0 && nx<m && ny>=0 && ny<n && map[nx][ny]!=0 && vis[nx][ny]==0){ vis[nx][ny]=1; if(map[nx][ny]!=map[x][y]) { num++;} dfs(nx,ny);//递归 } else continue; } return num; } int main() { int i,j,max1; num=0;