Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
127048 周歆童(初一23 翻转棋盘2 C++ 运行超时 10 1000 MS 256 KB 854 2024-01-24 21:05:46

Tests(1/10):


#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; }


测评信息: