猴子吃桃子问题 数据结构课程设计
答案:1 悬赏:0 手机版
解决时间 2021-03-20 03:25
- 提问者网友:城市野鹿
- 2021-03-19 20:52
猴子吃桃子问题 数据结构课程设计
最佳答案
- 五星知识达人网友:酒安江南
- 2021-03-19 22:14
//数组解法
#include
void main()
{
int i,tao[10];
tao[9]=1;//tao[9]代表第10天剩的桃子数
for(i=8;i>=0;i--){
tao[i]=2*(tao[i+1]+1);
}
printf("共摘了%d个桃子!\n",tao[0]);
}
//递归实现
#include
int tao(int n)
{
if(n==10) return 1;
return 2*(tao(n+1)+1);
}
void main()
{
int sum=0;
sum+=tao(1);
printf("共摘了%d个桃子!\n",sum);
}
至于用数据结构实现,可以采用栈,如下:
#include
#include
//栈的结构定义
typedef struct{
int *base;
int *top;
}Stack;
//初始化栈
void InitStack(Stack &s)
{
s.base=(int *)malloc(sizeof(int));
if(s.base) s.top=s.base;
else{
printf("空间分配错误!\n");
exit(0);
}
}
//入栈
void PushStack(Stack &s,int data)
{
*s.top++=data;
}
//出栈
int PopStack(Stack &s)
{
return *(--s.top);
}
void main()
{
int i=10,data;
Stack s;
InitStack(s);
PushStack(s,1);//先将第10天的桃子数1入栈
while(i-->1){
data=PopStack(s);//出栈一个元素保存在data中
PushStack(s,2*(data+1));//再将2*(data+1)入栈
}
//最后栈中剩余的那个元素就是第1天摘的桃子数
printf("共摘了%d个桃子!\n",PopStack(s));
}
#include
void main()
{
int i,tao[10];
tao[9]=1;//tao[9]代表第10天剩的桃子数
for(i=8;i>=0;i--){
tao[i]=2*(tao[i+1]+1);
}
printf("共摘了%d个桃子!\n",tao[0]);
}
//递归实现
#include
int tao(int n)
{
if(n==10) return 1;
return 2*(tao(n+1)+1);
}
void main()
{
int sum=0;
sum+=tao(1);
printf("共摘了%d个桃子!\n",sum);
}
至于用数据结构实现,可以采用栈,如下:
#include
#include
//栈的结构定义
typedef struct{
int *base;
int *top;
}Stack;
//初始化栈
void InitStack(Stack &s)
{
s.base=(int *)malloc(sizeof(int));
if(s.base) s.top=s.base;
else{
printf("空间分配错误!\n");
exit(0);
}
}
//入栈
void PushStack(Stack &s,int data)
{
*s.top++=data;
}
//出栈
int PopStack(Stack &s)
{
return *(--s.top);
}
void main()
{
int i=10,data;
Stack s;
InitStack(s);
PushStack(s,1);//先将第10天的桃子数1入栈
while(i-->1){
data=PopStack(s);//出栈一个元素保存在data中
PushStack(s,2*(data+1));//再将2*(data+1)入栈
}
//最后栈中剩余的那个元素就是第1天摘的桃子数
printf("共摘了%d个桃子!\n",PopStack(s));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯