Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127048 | 周歆童(初一23 | 翻转棋盘2 | C++ | 运行超时 | 10 | 1000 MS | 256 KB | 854 | 2024-01-24 21:05:46 |
#include<bits/stdc++.h> using namespace std; char Not(char a){ if(a=='w')return 'b'; return 'w'; } int n,ans=0x7fffffff; char a[20][20]; void dfs(int l,int c,int step){ if(l==n&&c>n){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(a[i][j]!=a[1][1])return; } } ans=min(ans,step); return; } if(c>n){ c=1; l++; } for(int i=1;i<=max(l-2,0);i++){ for(int j=1;j<=n;j++){ if(a[i][j]!=a[1][1])return; } } dfs(l,c+1,step); a[l-1][c]=Not(a[l-1][c]); a[l][c-1]=Not(a[l][c-1]); a[l][c]=Not(a[l][c]); a[l][c+1]=Not(a[l][c+1]); a[l+1][c]=Not(a[l+1][c]); dfs(l,c+1,step+1); } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; if(a[i][j]=='\n')j--; } } dfs(1,1,0); if(ans<0x7fffffff)cout<<ans; else cout<<"Impossible"; return 0; }