当前位置:首页 » 编程语言 » c语言猴子爬山

c语言猴子爬山

发布时间: 2024-01-07 14:00:14

1. c语言编程题,关于猴子分桃问题

正确的答案是3121。
手工验算一下吧,又不难的!
#include
<stdio.h>
//判断能否被合理的分配
int
divide(int
n,int
m)
{
if(n/5==0
||
n%5!=1)
{//不足5个或不能分5份多1个,分配失败
return
0;
}
if(m==1)
{//分到最后一个猴子,说明能分配成功
return
1;
}
return
divide(n-n/5-1,m-1);
}
main()
{
int
n;//桃子数量
for(n=1;;n++)
{
if(divide(n,5))
{//判断能否被合理的分配
printf("%d\n",n);
break;
}
}
}

2. C语言程序设计,猴子选大王

#include<stdio.h>
#include<stdlib.h>
main()
{ int a[50];
int i,j,M,N,t=0;
printf("input two number.\n");
scanf("%d %d",&N,&M);
for(i=0;i<N;i++)
a[i]=i+1;
for(j=1,i=0;;j++,i++)
{
if(i==N)i=0;
if(a[i]==0){j--;continue;}
if(j%M==0){a[i]=0;t++;}
if(N-t==1)break;
}
for(i=0;i<N;i++)
if(a[i]!=0) printf("猴王是第%d个.\n",a[i]);
system("pause");
}
试试...

3. c语言编程解决小猴爬山

上山下山应该是一样的,都是让电脑一个值一个值去判断。我的想法是让电脑先判断出所有可能的组合,比如2+3+5和3+2+5是一个概念,然后建立一个排列组合的函数,对组合进一步处理。上山为例:
#include<stdio.h>
intjc(inta)//阶乘
{
inti,j=1;
for(i=a;i>0;i--)
{
j=j*i;
}
returnj;
}
intmain(intargc,char*argv[])
{
intn;//方法数
constintt=50;//台阶数
inti,j,k;

for(i=0;i<=25;i++)//2*25=50
for(j=0;j<17;j++)//3*16=48
for(k=0;k<13;k++)//4*12=28
{
if(2*i+3*j+4*k==t)//两步、三步或四步
{
n=n+jc(i+j+k)/(jc(i)*jc(k)*jc(j));
}
}
printf("上山总数为:%d种 ",n);
return0;
}

这个程序计算出来上山有3731种

热点内容
服务器如何从导轨取下来 发布:2025-01-23 10:28:30 浏览:102
华为手机的密码保险柜在哪里 发布:2025-01-23 10:27:02 浏览:633
三星的铃声文件夹是哪个 发布:2025-01-23 10:26:25 浏览:115
信号量编程 发布:2025-01-23 10:23:59 浏览:555
网易邮箱账号和密码哪里查看 发布:2025-01-23 10:09:37 浏览:306
java数据库下载 发布:2025-01-23 10:04:33 浏览:247
基岩版服务器改地址 发布:2025-01-23 09:59:33 浏览:506
android获取sim卡 发布:2025-01-23 09:48:49 浏览:178
快捷指令自动清理缓存 发布:2025-01-23 09:45:41 浏览:77
数据结构算法实现及解析 发布:2025-01-23 09:33:22 浏览:153