|
本帖最后由 黄煦喆 于 2019-7-5 09:54 编辑
- #include<iostream>
- #include<cstring>
- using namespace std;
- int m,n,sum,a[101][101],s[101][101];
- bool b[101][101];
- int dx[4]= {0,0,+1,-1};
- int dy[4]= {+1,-1,0,0};
- void dfs(int x,int y,bool magic)
- {
- if(sum>=s[x][y])return;
- else s[x][y]=sum;
- if(x==m&&y==m)return;
- else for(int i=0; i<4; i++)
- {
- int tx=x+dx[i];
- int ty=y+dy[i];
- if(!b[tx][ty]&&tx>=1&&tx<=m&&ty>=1&&ty<=m)
- {
- if(a[tx][ty]==a[x][y])
- {
- b[tx][ty]=1;
- dfs(tx,ty,1);
- b[tx][ty]=0;
- }
- else if(a[tx][ty]!=a[x][y]&&a[tx][ty]!=-1)
- {
- b[tx][ty]=1,sum++;
- dfs(tx,ty,1);
- sum--,b[tx][ty]=0;
- }
- else if(a[tx][ty]==-1&&magic)
- {
- b[tx][ty]=1, a[tx][ty]=a[x][y];
复制代码 |
|