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

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等等
...全文
214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
看不明白啥意思

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧