富顺县规划和建设局网站,h5网站开发案例,建外做网站的公司,ipad做电影网站题意#xff1a;一个01矩阵#xff0c;表示灯的亮灭状态#xff0c;每次操作可以改变一个十字形状内的五个灯的状态。问能否将所有灯熄灭。 分析#xff1a;高斯消元法 对于每个灯的两灭有影响的开关就是它附近十字形内的五个开关。所以对于每个灯可以列一个方程#xff0…题意一个01矩阵表示灯的亮灭状态每次操作可以改变一个十字形状内的五个灯的状态。问能否将所有灯熄灭。 分析高斯消元法 对于每个灯的两灭有影响的开关就是它附近十字形内的五个开关。所以对于每个灯可以列一个方程即周围五个开关异或起来的结果应该可以使该灯熄灭。 就是利用线性代数知识写出增广矩阵化为阶梯形矩阵有下到上依次解出各未知量。 View Code #include iostream#include cstdlib#include cstring#include cstdiousingnamespace std;#define maxn 35int f[maxn][maxn];int g[maxn][maxn];int x[maxn];int dir[5][2] {{ 0, 0 },{ 0, 1 },{ 1, 0 },{ -1, 0 },{ 0, -1 } };void debug(){for (int i 0; i 30; i) {for (int j 0; j 31; j) cout g[i][j]; cout endl; } cout endl;}void input(){for (int i 0; i 5; i)for (int j 0; j 6; j) scanf(%d, g[i *6 j][30]);}void work(){int k;int row, col;for (row 0, col 0; row 30 col 30; row, col) {for (k row; k 30; k)if (g[k][col] !0)break;if (k 30) { row--;continue; }if (k ! row)for (int i col; i 30; i) swap(g[row][i], g[k][i]);for (int i row 1; i 30; i)if (g[i][col])for (int j col; j 30; j) g[i][j] ^ g[row][j]; }for (int i row; i 0; i--) { x[i] g[i][30];for (int j 29; j i; j--) x[i] ^ (g[i][j] x[j]); }}void print(){for (int i 0; i 5; i) { printf(%d, x[i *6]);for (int j 1; j 6; j) printf( %d, x[i *6 j]); putchar(\n); }}int main(){//freopen(t.txt, r, stdin);for (int i 0; i 5; i)for (int j 0; j 6; j)for (int k 0; k 5; k) {int a i dir[k][0];int b j dir[k][1];if (a 0 b 0 a 5 b 6) f[i *6 j][a *6 b] 1; }int t; scanf(%d, t);for (int i 0; i t; i) { printf(PUZZLE #%d\n, i 1); memcpy(g, f, sizeof(g)); input(); work(); print(); }return0;} 转载于:https://www.cnblogs.com/rainydays/archive/2011/08/31/2160748.html