算法求解
本帖最后由 geochway 于 2013-08-14 08:28:27 编辑 已知数据转换表:
const unsigned char T[256]={
170,42,95,141,109,30,71,89,26,147,231,205,239,212,124,129,
216,79,15,185,153,14,251,162,0,241,172,197,43,10,194,235,
6,20,72,45,143,104,161,119,41,136,38,189,135,25,93,18,
224,171,252,195,63,19,58,165,23,55,133,254,214,144,220,178,
156,52,110,225,97,183,140,39,53,88,219,167,16,198,62,222,
76,139,175,94,51,134,115,22,67,1,249,217,3,5,232,138,
31,56,116,163,70,128,234,132,229,184,244,13,34,73,233,154,
179,131,215,236,142,223,27,57,246,108,211,8,253,85,66,245,
193,78,190,4,17,7,150,127,152,213,37,186,2,243,46,169,
68,101,60,174,208,158,176,69,238,191,90,83,166,125,77,59,
21,92,49,151,168,99,9,50,146,113,117,228,65,230,40,82,
54,237,227,102,28,36,107,24,44,126,206,201,61,114,164,207,
181,29,91,64,221,255,48,155,192,111,180,210,182,247,203,148,
209,98,173,11,75,123,250,118,32,47,240,202,74,177,100,80,
196,33,248,86,157,137,120,130,84,204,122,81,242,188,200,149,
226,218,160,187,106,35,87,105,96,145,199,159,12,121,103,112
};
现在有两个输入参数A和B,均为unsigned char类型,需要求解四个类似于T的转换表
X[],Y[],Z[],U[],要求能够满足对于任意A,B,均有:T[A&B]=(X[A]&Y[B])|(Z[A]&U[B])。
问题:X,Y,Z,U是否存在?如果存在,如何编程求解(T可任意指定)?
说明:&、|表示C语言的代数与、或运算。
[解决办法]
算法问题 帮你顶一下
[解决办法]
我看着就晕,也想知道这个算法要怎么写,顶下
[解决办法]
T[A&B]=(X[A]&Y[B])
[解决办法]
(Z[A]&U[B])
数学问题、、
运算中不涉及进位,故而可以按位单独考虑、、然后八个独立的位合成一个unsigned char
可以假定Z[A]=X[A],U[B]=Y[B],,,
如果T可任意指定,可以假定T[A]=A;
那么可以得出T[A&B]=A&B=T[A]&T[B],可以假定X,Y又与T相同,则求出了结果
如果T数组就是上面的那个固定的数组,如果楼主没有写错,数组的索引和值是一一对应的256项。但是需要知道这种一一对应的关系到底是怎样的