一个关于递归和的问题!!!

yaojunchen 2007-08-11 09:18:14
有人能帮我用递归输出8个有1,0组成的数组?
要求1,0的个数必须相等都是4个!!而且1的个数小于或者等于0就那么它下一个数必须是1,第一个必须是1,最后一个必须是0,把所有条件成立的都输出来显示!!
如:int a[8];
a[0]=1;a[7]=0;//这2个必须是这样输出
其他的可以是:1111000 1110100 10101010等等
...全文
185 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-08-12
要算满20分的。
回复
yaojunchen 2007-08-12
他说我给的分总和不对!!!这是怎么回事吗?
回复
uzone 2007-08-12
点击上面的“管理”,哈哈。
回复
yaojunchen 2007-08-12
3Q!!!
我怎么给你分啊楼上的朋友!!
回复
uzone 2007-08-11
粗略的写了个,没细想,太晚了,明天在看看。

/*
有人能帮我用递归输出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;
}
回复
hoya5121 2007-08-11
看不明白啥意思
回复
发动态
发帖子
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告