1 条题解
-
1赵青海 (huhe) LV 7 SU @ 2023-11-19 16:54:31
#include<bits/stdc++.h> using namespace std; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; int a[110][110],n,m,vis[110][110],b; void dfs(int x,int y){ vis[x][y]=1; a[x][y]=0; for(int i=0;i<4;i++){ int xx=x+dx[i]; int yy=y+dy[i]; if(xx<1||xx>n||yy<1||yy>n) continue; if(a[xx][yy]!=b) continue; if(vis[xx][yy]==0){ vis[xx][yy]=1; dfs(xx,yy); vis[xx][yy]=0; } } return ; } int main(){ memset(vis,0,sizeof(vis)); cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } b=a[n][m]; dfs(n,m); for(int i=n-1;i>=1;i--){ for(int j=1;j<=n;j++){ if(a[i][j]!=0){ int k=i+1; while(a[k][j]==0&&k<=n){ k++; } k--; if(a[k][j]==0) swap(a[k][j],a[i][j]); } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<a[i][j]<<' '; } cout<<endl; } return 0; }
- 1
信息
- ID
- 3014
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 179
- 已通过
- 58
- 上传者