永发信息网

上楼梯问题c/c++

答案:3  悬赏:50  手机版
解决时间 2021-03-18 07:31
  • 提问者网友:送舟行
  • 2021-03-17 19:35
上楼梯问题c/c++
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-03-17 20:16
#include
int place[200]={0};
int n=1;
void zuhe(int m,int m1,int k)
{
int i,j;
for(i=1;i<=m1;i++)
{
if(m>0)
{
place[k]=m-i;
zuhe(m-i,m1,k+1);
}
}
if(!m)
{
printf("Case %d:",n++);
for(j=1;j {
printf("%4d",place[j-1]-place[j]);
}
printf("\n");
}
} int main()
{
int N,M;
scanf("%d%d",&N,&M);
place[0]=N;
zuhe(N,M,1);
return 0;
}
全部回答
  • 1楼网友:迟山
  • 2021-03-17 22:09
为啥子要匿名呢?
  • 2楼网友:琴狂剑也妄
  • 2021-03-17 21:46
你好,楼主,为了我团队的荣誉,我是给你解出来了。
我用的是栈这个数据结构,代码如下,不懂请追问
#include"stdlib.h"
#include"stdio.h"
typedef struct{
int * base;
int * top;
int stksize;
}stack;
//初始化栈
int init(stack &s,int size)
{
s.base=(int *)malloc(size*sizeof(int));
if(!s.base)return -1;
s.top=s.base;
s.stksize=size;
return 1;
}
//压栈
int push(stack &s,int e)
{
*s.top=e;
s.top++;
return 1;
}
//获得栈长度
int lenth(stack s)
{
int len;
len=s.top-s.base;
return len;
}
//取栈顶
int pop(stack &s)
{
if(s.base==s.top)return 0;
s.top--;
return 1;
}
//打印栈的所有元素
void prt_stack(stack s)
{
int l=lenth(s);
int i;
for(i=0;i printf(" %d",*(s.base+i));
printf("\n");
}
//打印case n:
void prt_case(int &a)
{
a++;
printf("Case%d:",a);
}
//求栈的总和
int sum_stack(stack s)
{
int l=lenth(s);
int i;
int sum=0;
for(i=0;i sum+=*(s.base+i);
return sum;
}
int main()
{
stack s;
int i,count=0;
int m,n; //n 个台阶, 最大走m 步
scanf("%d",&n);
scanf("%d",&m);
//初始化一个大小为n的栈
if(init(s,n)==-1)
{
printf("内存分配失败\n");
return 0;
}
//全部赋值为1
for(i=0;i *(s.base+i)=1;
//求解循环
while(*(s.base)<=m)
{
if(sum_stack(s)==n)
{
prt_case(count);
prt_stack(s);
pop(s);
*(s.top-1)+=1;
}
if(sum_stack(s) {
push(s,1);
}
}
return 1;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯