一个关于递归和的问题!!!
有人能帮我用递归输出8个有1,0组成的数组?
要求1,0的个数必须相等都是4个!!而且1的个数小于或者等于0就那么它下一个数必须是1,第一个必须是1,最后一个必须是0,把所有条件成立的都输出来显示!!
如:int a[8];
a[0]=1;a[7]=0;//这2个必须是这样输出
其他的可以是:1111000 1110100 10101010等等
[解决办法]
粗略的写了个,没细想,太晚了,明天在看看。
/*
有人能帮我用递归输出8个有1,0组成的数组?
要求1,0的个数必须相等都是4个!!而且1的个数小于或者等于0就那么它下一个数必须是1,第一个必须是1,最后一个必须是0,把所有条件成立的都输出来显示!!
如:int a[8];
a[0]=1;a[7]=0;//这2个必须是这样输出
其他的可以是:1111000 1110100 10101010等等
*/
#include <stdio.h>
#define N 8
void Print(int *a,int n)
{
int i;
for(i=0;i <n;i++)
printf( "%3d ",*(a+i));
printf( "\n ");
}
//n:前面几个数;m:前面几个1
void fun(int *a,int n,int m)
{
if(N-1==n)
{
if(N/2!=m)
return;
else
{
*a=0;
Print(a-N+1,N);
}
}
else if(m <=n-m)
{
*a=1;
fun(a+1,n+1,m+1);
}
else
{
*a=0;
fun(a+1,n+1,m);
*a=1;
fun(a+1,n+1,m+1);
}
}
int main(void)
{
int a[N+1]={0};
a[1]=1;
fun(a+2,1,1);
return 0;
}