用高斯消元法解异或方程组
异或方程组就是形如这个样子的方程组:
M[0][0]x[0]^M[0][1]x[1]^…^M[0][N-1]x[N-1]=B[0]
M[1][0]x[0]^M[1][1]x[1]^…^M[1][N-1]x[N-1]=B[1]
…
M[N-1][0]x[0]^M[N-1][1]x[1]^…^M[N-1][N-1]x[N-1]=B[N-1]
其中“^”表示异或(XOR, exclusive or),M[i][j]表示第i个式子中x[j]的系数,是1或者0。B[i]是第i个方程右端的常数,是1或者0。
解这种方程可以套用高斯消元法,只须将原来的加减操作替换成异或操作就可以了,两个方程的左边异或之后,它们的公共项就没有了。
具体的操作方法是这样的:对于k=0..N-1,找到一个M[i][k]不为0的行i,把它与第k行交换,用第k行去异或下面所有M[i][j]不为0的行i,消去它们的第k个系数,这样就将原矩阵化成了上三角矩阵;最后一行只有一个未知数,这个未知数就已经求出来了,用它跟上面所有含有这个未知数的方程异或,就小觑了所有的着个未知数,此时倒数第二行也只有一个未知数,它就被求出来了,用这样的方法可以自下而上求出所有未知数。
示例程序:t3.cpp
(HAOI 2005 t3)

cyclone77 Said,
April 6, 2009 @ 09:13
神牛
miranda Said,
March 18, 2010 @ 21:09
你好,现在需要一个解异或方程组的程序,形式如你上面描述的,但是看了你的程序没有看出来门道来,你不能麻烦你发个注释,比如输入输出什么的,谢谢!
fay.bin Said,
April 5, 2010 @ 15:46
DD_engi牛
我是安阳一中的一名OIER
请问能不能知道你的QQ联系方式? 有问题以便请教?