当前位置: 代码迷 >> C语言 >> [求助]帮我看一下那里错了 谢谢
  详细解决方案

[求助]帮我看一下那里错了 谢谢

热度:246   发布时间:2007-03-17 11:33:45.0
[求助]帮我看一下那里错了 谢谢

#include "stdio.h"
#define maxline 200
int comb2(int n, int m)
{
int stack[maxline][3], top=1,s1,s2;
if (n<m|| n<0||m>0)
{
return (-1);
}
stack[top][1]=0;
stack[top][2]=n;
stack[top][3]=m;
do
{
printf("top=%d %d %d %d\n",top,stack[top][1],stack[top][2],stack[top][3]);
if(stack[top][1]==0)
{
top++;
stack[top][1]=0;
stack[top][2]=stack[top-1][2]-1;
stack[top][3]=stack[top-1][3];
if(stack[top][3]==0||stack[top][2]==stack[top][3])
stack[top][1]=1;
}

if(top>=2&&stack[top][1]>0&&stack[top-1][1]==0)
{
top++;
stack[top][1]=0;
stack[top][2]=stack[top-2][2]-1;
stack[top][3]=stack[top-2][3]-1;
if(stack[top][3]==0||stack[top][2]==stack[top][3])
stack[top][1]=1;
}

if(top>2&&stack[top][1]>0&&stack[top-1][1]>0)
{
s1=stack[top][1];
s2=stack[top-1][1];
top=top-2;
stack[top][1]=s1+s2;
}
}
while(top>1)
return(stack[1][1]);
}

main()
{
int n=5,m=3;
printf("comb: %d\n", comb2(n,m));
getch();

}


----------------解决方案--------------------------------------------------------
while(top&gt;1);
----------------解决方案--------------------------------------------------------
晕  谢谢了
----------------解决方案--------------------------------------------------------
  相关解决方案