猴子远大王数据结构算法
2个回答
展开全部
可使用数组回溯法:
回溯法是:将猴子总个数循环,第一次循环都是将当前需要出圈的猴子排列到数组的末尾。这样全部猴子循环一遍后,数组头的猴子极为猴王。注意,循环一起找出第一个之后将之循环它之前的剩余数组。即程序中的for(i=MAX-1;i>=0;i--)
[cpp] view plaincopy
#include<stdio.h>
#include<dos.h>
#define MAX 30/*定义猴子总数*/
int i,j,k,temp;
int Monkey[MAX],S;
void init()
{
for(i=0;i<MAX;i++)
Monkey[i]=i+1;
for(i=0;i<MAX;i++)
printf("%d ",Monkey[i]);/*让猴子站成一圈*/
printf("\n");
}
void output()
{
printf("猴子淘汰出圈的顺序是:\n\r");
for(i=MAX-1;i>=0;i--)
printf("第 %3d 只猴子出圈!\n\r",Monkey[i]);
printf("猴王是:第 %d 只猴子\n\r",Monkey[0]);
}
void main()
{
init();
printf("请输入出队的序数:");
scanf("%d",&S);/*读取猴子出队序数*/
for(i=MAX-1;i>=0;i--)
{
for(k=1;k<=S;k++)
{
temp=Monkey[0];
for(j=0;j<i;j++)
{
Monkey[j]=Monkey[j+1];
}
Monkey[i]=temp;
}/*将每一次要出队的猴子排到队尾*/
}
output();
}
回溯法是:将猴子总个数循环,第一次循环都是将当前需要出圈的猴子排列到数组的末尾。这样全部猴子循环一遍后,数组头的猴子极为猴王。注意,循环一起找出第一个之后将之循环它之前的剩余数组。即程序中的for(i=MAX-1;i>=0;i--)
[cpp] view plaincopy
#include<stdio.h>
#include<dos.h>
#define MAX 30/*定义猴子总数*/
int i,j,k,temp;
int Monkey[MAX],S;
void init()
{
for(i=0;i<MAX;i++)
Monkey[i]=i+1;
for(i=0;i<MAX;i++)
printf("%d ",Monkey[i]);/*让猴子站成一圈*/
printf("\n");
}
void output()
{
printf("猴子淘汰出圈的顺序是:\n\r");
for(i=MAX-1;i>=0;i--)
printf("第 %3d 只猴子出圈!\n\r",Monkey[i]);
printf("猴王是:第 %d 只猴子\n\r",Monkey[0]);
}
void main()
{
init();
printf("请输入出队的序数:");
scanf("%d",&S);/*读取猴子出队序数*/
for(i=MAX-1;i>=0;i--)
{
for(k=1;k<=S;k++)
{
temp=Monkey[0];
for(j=0;j<i;j++)
{
Monkey[j]=Monkey[j+1];
}
Monkey[i]=temp;
}/*将每一次要出队的猴子排到队尾*/
}
output();
}
广州联网科技有限公司
2024-10-19 广告
2024-10-19 广告
UWB定位技术,即Ultra Wideband(超宽带)技术,是一种高精度的无线通信技术。它通过发送和接收极窄脉冲实现无线传输,具有穿透力强、功耗低、安全性高及定位精度高等显著优势。UWB定位技术能在复杂环境中实现厘米级精确定位,广泛应用于...
点击进入详情页
本回答由广州联网科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询