c語言猴子偷桃
⑴ 用c語言怎麼做猴子偷桃
#include <stdio.h>
#include <stdlib.h>
int gouzitigui(int n){
printf("xxxxxxxxxxxxx\n");
if(n==1){
return 1;
}else{
return (gouzitigui(n-1)+1)*2;
}
}
int main()
{
int i,n=1;
printf("猴子最初有%d個桃子",gouzitigui(10));
return 0;
}
從題目中可以得出後一天是前一天加1乘以2,
⑵ 用鏈表(C語言)解決解決猴子偷桃問題
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
j=1;
for(i=1;i<10;i++)
{
j=2*(j+1);
}
printf("第一天摘桃子的個數為%d\n",j);
return 0;
}
⑶ 猴子摘桃!C語言,老是輸出自己的值,新人求教
#include<stdio.h>
intq(inta)
{
inti;
intb=1;
intc;
for(i=1;i<=a-1;i++)
{
c=2*(b+1);
b=c;
}
returnc;
}
intmain(void)
{inta;
while(~scanf("%d",&a))
{if(a!=1)
{
printf("%d ",q(a));}
elseprintf("1 ");
}
⑷ c語言程序猴子偷桃問題
#include<stdio.h>
int main()
{
int i,n=1;
for(i=9;i>0;i--)
n=(n+1)*2;
printf("the number of all peach is %d ",n);
return 0;
}
⑸ 猴子摘桃問題我寫的c語言程序哪裡出錯了。
#include <stdio.h>
int ok(long n)
{
int i,count;
count=0;
for(i=0;i<5;i++)
{
if(n%5!=1)
break;
else
{
n=(n-1)/5*4;
count++;}
}
return count;
}
void main()
{
int ok(long n);
int k,l,a[1000];
long n;
l=0;
for(n=6;n<100000;n++)
{
if(ok(n)==5)
{
//printf("%d\n",n);
a[l]=n;
l++;
}
}
printf("一共有%d種方案\n",l);
for(k=0;k<l;k++)
{
printf("若猴子拿到和吃掉的桃總數為:");
printf("%d\n",a[k]);
printf("則每隻猴子拿到和吃掉的桃數\n");
printf("第一隻猴子拿到和吃掉的桃數:");
printf("%d\n",a[k]=(a[k]-1)/5+1);
printf("第二隻猴子拿到和吃掉的桃數:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第三隻猴子拿到和吃掉的桃數:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第四隻猴子拿到和吃掉的桃數:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("第五隻猴子拿到和吃掉的桃數:");
printf("%d\n",a[k]=(4*a[k]-1)/5+1);
printf("*********************************************************\n");
}
}
//你的程序沒控制好變數
⑹ 用遞歸解決猴子偷桃問題
使用數組的方法為:
#include "stdafx.h"
int main(int argc, char* argv[])
{
int a[10],i,j;
a[0]=1;
for(i=1;i<10;i++)
{
a[i]=(a[i-1]+1)*2;
}
printf("一共有桃子的個數為:%d",a[9]);
return 0;
}
用遞歸的方法為:
#include "stdafx.h"
int fun(int y)
{
int m;
if(y==1) return
m=1;
else
m=(fun(y-1)+1)*2;
return m;
}
int main(int argc, char* argv[])
{
int a=10;
b=fun(a);
printf("一共有桃子的個數為:%d",b);
return 0;
}
本人不會用鏈表進行編寫!
⑺ C語言作業:用遞歸法怎麼做猴子摘桃知道的大哥大姐幫幫忙!
猴子摘桃問題
猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以後每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,問第一天共摘下來多少個桃子?
#include<stdio.h>
intgetPeachNumber(n){
intnum;/*定義所剩桃子數*/
if(n==10)
return1;/*遞歸結束條件*/
else{
num=getPeachNumber(n+1)*2+2;/*遞歸*/
printf("第%d天所剩桃子%d個 ",n,num);/*天數,所剩桃子個數*/
}
returnnum;
}
intmain(void){
intnum=getPeachNumber(1);
printf("猴子第一天摘了%d個桃子。 ",num);
getch();/*屏幕暫留*/
return0;
}
運行結果
⑻ c語言:猴子分桃
呵呵,最近怎麼一直看到猴子分桃。答案是620~
#include <iostream>
using namespace std;
float superMonkey(int n,int n2)
/**參數說明:n是幾只猴子。n2是最後最遲醒來的猴子擁有的桃數,比如在你的題目最遲醒來的猴子最少最少都要有6個桃子,才能分成五份,再吃掉剩下的一個。**/
{
if (n==1) return n2;
float x;
x = (5 * (superMonkey(n-1,n2)+1))/4;
return x;
}
int main(int argc, char *argv[])
{
for(int i=6; i<=300;i++)
{
cout<<superMonkey(5,i)<<"\n";//5隻猴子,為了找出原先最少必須有幾個,用循環求答案直到找到一個整數。
}
cin.get();
}
/**接下來出現的一堆數字就是一開始的桃數。不能有小數點的,所以要找的是第一個出現的整數。我放300次循環因為我稍微試過了,620是原先必須有的最少桃數(第一個出現的整數就是620啊)。你可以稍微改改,放個檢測整數的函數,就不用看到一堆數字了。還可以該題目成10隻猴子什麼的。**/
⑼ C語言猴子吃桃問題遞歸法
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:採取逆向思維的方法,從後往前推斷。
2.程序源代碼:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
==============================================================
⑽ C語言轉化方程。 猴子摘桃
這道題我的c語言書上有。給你看一下:
假設第一天有a1個桃,第二天有a2個,……,第九天有a9個,第10天有a10個。在這裡面只有a10=1是知道的,我們要計算a1,而我們可以看出,a1~a10存在著簡單的聯系:
a9=2(a10 1)
a8=2(a9 1)
a7=2(a8 1)
…
a1=2(a2 1)
由此我們可以看出這是一個遞推關系。