原题
#include<bits/stdc++.h>
using namespace std;
bool a[5][5];
int ans=1000000,dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
void cz(int x,int y)
{ for(int i=1;i<=4;i++)
{ a[x+dx[i]][y+dy[i]]=!a[x+dx[i]][y+dy[i]];
}
return;
}
void dfs(int k)
{ if(k>=ans)
{ return;
}
int sum=0;
for(int i=1;i<=3;i++)
{ for(int j=1;j<=3;j++)
{ if(a[i][j]==1)
{ sum++;
}
}
}
if(sum==9)
{ ans=min(ans,k);
}
for(int i=1;i<=3;i++)
{ for(int j=1;j<=3;j++)
{ a[i][j]=!a[i][j];
cz(i,j);
dfs(k+1);
a[i][j]=!a[i][j];
cz(i,j);
}
}
return;
}
int main()
{ for(int i=1;i<=3;i++)
{ for(int j=1;j<=3;j++)
{ cin>>a[i][j];
}
}
dfs(0);
cout<<ans;
return 0;
}