思路:
暴力解法,不是最优解,九宫格,分四种情况,右下角最后一个格子,最后一列,最后一行,其他情况,四个格子做三次交换就可以只把其中一个格子改变,其余三个不变
AC代码:
#include#include #include using namespace std; const int N = 110; int n,m; char g[N][N]; void pl(int i, int j, int k) { if(!k) printf("%d %d %d %d %d %dn",i, j, i+1, j, i, j+1);//左上 else if(k == 1) printf("%d %d %d %d %d %dn",i, j-1, i, j, i+1, j);//右上 else if(k == 2) printf("%d %d %d %d %d %dn",i-1, j, i, j, i, j-1);//右下 else printf("%d %d %d %d %d %dn",i-1, j, i, j, i, j+1);//左下 } int main () { int T; cin >> T; while(T--) { cin >> n >> m; int res = 0; for(int i = 1; i <= n; i++) { cin >> g[i]+1; for(int j = 1; j <= m; j++) { if(g[i][j] == '1') { res += 3; } } } cout << res << endl; for(int i = 1; i<= n; i++) for(int j = 1; j <= m; j++) { if(g[i][j] == '1') { if(i < n && j < m) { pl(i,j,0),pl(i+1,j,3),pl(i,j+1,1); } else if(i == n && j == m) { pl(i,j,2),pl(i-1,j,1),pl(i,j-1,3); } else if(i == n) { pl(i,j,3),pl(i-1,j,0),pl(i,j+1,2); } else { pl(i,j,1),pl(i+1,j,2),pl(i,j-1,0); } } } } }



