while(i<n*n)
{
t=i;
j=n-1;
while(t)
{
a[i][j]=t%2;
t/=2;
j--;
}
while(j-->=0)
{
a[i][j]=0;
}
i++;
}
----------------解决方案--------------------------------------------------------
错了,应该是从0--2^n-1
不好意思.相应的代码中改一下.
----------------解决方案--------------------------------------------------------
应该可以位移前4个 然后在求前4个的取反 可以吗??
说说具体做法.
----------------解决方案--------------------------------------------------------
0 0 0取反----1 1 1
0 0 1 ----1 1 0
0 1 0 ----1 0 1
0 1 1 ----1 0 0
前面几个我 就不清楚了 因为位移的那节我没大看。。只知道有着回事而已。。
----------------解决方案--------------------------------------------------------
就是用 ‘ ~ ’取反啊
----------------解决方案--------------------------------------------------------
0 0 0取反----1 1 1
0 0 1 ----1 1 0
0 1 0 ----1 0 1
0 1 1 ----1 0 0
前面几个我 就不清楚了 因为位移的那节我没大看。。只知道有着回事而已。。
那你数组里用什么类型存储,布尔?
----------------解决方案--------------------------------------------------------
什么布尔啊 我没学过啊
a[0]=000,a[1]=001,a[2]=010,a[3]=011
a[4]=~a[3], a[5]=~a[2], a[6]=~a[1], a[7]=~a[0].
着样可以吧
----------------解决方案--------------------------------------------------------
布尔类型是指只有0和1.
可是你给a[0]赋上000,人家还是个0取反之后就不是111了.
----------------解决方案--------------------------------------------------------
哦哦
----------------解决方案--------------------------------------------------------
to nuciewth :
在你的第二个while里出现了死循环。应该有j--;这一句吧!
----------------解决方案--------------------------------------------------------