逻辑分组问题如下:1,2,3,4 ... n 个变量i,ii,iii,iv .. n个管理员管理员分组管理变量,可以一个管理员管理
逻辑分组
问题如下:
1,2,3,4 ... n 个变量
i,ii,iii,iv .. n个管理员
管理员分组管理变量,可以一个管理员管理多个变量,也可以多个管理员管理一个变量。同一个管理员可能出现在多个分组内。
各位有什么好的想法,如何实现?
[解决办法]
假设 n=1000,
将你的所有变量的指针保存到数组“变量类型 *pvars[1000]”中(4000bytes),
将你的所有管理员的指针保存到数组“管理员类型 *pmgrs[1000]”中(4000bytes),
static unsigned char M[1000][1000];//(1000000bytes) M[a][b]==1表示第a个管理员“*(pmgrs[a])”管理变量b“*(pvars[b])”,M[a][b]==0表示第a个管理员不管变量b
所有变量共占用内存:4000+4000+1000000==1008000bytes≈1MB,远小于全局变量内存区。
[解决办法]二维数组也不用放实际数据。
两个一维数组,分别记录arr管理员和arr变量的数据。二维只记录是否拥有,一个bit就够了。比如管2有变3,变5,那么
arr[1][2] = 1; arr[1][4] = 1;
你要查管理员有哪些变量,那么就查某行有哪几个列是1的。反之,就是某列有哪几行是1。然后再根据查到的下标去arr管理员或arr变量里获得实际数据。
当然,这个方法要事先知道有多少管理员和变量
[解决办法]这种不用数据库的话可以用位域处理
a[i]= a0
[解决办法]a1
[解决办法]a2
[解决办法].....an
用数据库也就是个很简单的表,怎么会很复杂呢
你这个excel都能很好处理的情况,数据库应该很容易的呀。
数据库都比这复杂得多!
[解决办法]table admin(id, name, 其它管理员属性)
表数据:
I
II
III
...
N
table var(id, name, 其它变量属性)
表数据:
1
2
3
...
N
table group(id, name, 其它组属性)
table admin_var_mapping(admin_id, var_id)
针对那个图,取管理员I,II,III和变量1,2,3,表中包含数据:
I 1
I 3
II 1
III 3
table group_admin_mapping(group_id, admin_id)