当前位置: 代码迷 >> C语言 >> [求助]递归填充数组问题。。
  详细解决方案

[求助]递归填充数组问题。。

热度:111   发布时间:2006-10-25 21:56:35.0
可以把0---n*n-1这几个数划为2进制存在这个数组中,不够位的前补0.大致是下面这样的.
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
不好意思.相应的代码中改一下.
----------------解决方案--------------------------------------------------------
以下是引用mp3aaa在2006-10-25 21:54:54的发言:

应该可以位移前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
前面几个我 就不清楚了 因为位移的那节我没大看。。只知道有着回事而已。。
----------------解决方案--------------------------------------------------------
就是用  ‘ ~ ’取反啊
----------------解决方案--------------------------------------------------------

以下是引用mp3aaa在2006-10-25 22:03:00的发言:
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--;这一句吧!
----------------解决方案--------------------------------------------------------
  相关解决方案