导航:首页 > 编程知识 > 猴编程主要说的什么

猴编程主要说的什么

发布时间:2023-07-16 02:25:34

『壹』 求大神编一段C程序,猴子当大王。

用链表写的话比较好,资源占用少;用数组的话也行,如下:

这是一种关于约瑟夫循环的问题,所以一般用的循环单链表数据结构,具体细节参照我网络空间的一篇文章

#include"stdio.h"

#include<stdlib.h>

voidmain(void)

{

intresult(int*p,intn,intlimit);

intn=0;//总人数

intm=0;//报数截止号

int*p;

for(;;)

{

printf("inputnumberofnandm:");

scanf("%d%d",&n,&m);

if(m<=0||n<=0)

{

exit(0);

}

p=(int*)malloc(n*sizeof(int));

printf("ThekingisNO.%d ",result(p,n,m));

delete[]p;

}

}

intresult(int*p,intn,intlimit)

{

inti=0;

for(i=0;i<n;i++)

p[i]=i+1;

i=0;//i为每次循环时计数变量

intk=0;//k为按1,2,3...limit报数时的计数变量

intm=0;//m为退出人数

while(m<n-1)//当退出人数比n-1少时(即未退出人数大于1时)执行循环体

{

if(p[i]!=0)k++;//如果编号为0,就不报数;如果编号不为0,报数加1

if(k==limit)//将退出的人的编号置为0

{

p[i]=0;

k=0;//重新开始报数

m++;//退出人数加1

}

i++;

if(i==n)i=0;//报数到尾后,i恢复为0

}

i=0;

while(p[i]==0)i++;

returnp[i];

}

测试结果:

『贰』 C语言编程猴子吃桃子问题


#include<stdio.h>
intmain(){
inttotal=1,delta=1,i;
for(i=99;i>0;--i){
total=2*delta+1;
delta=total/2+1;
printf("第%d天,%d个桃子 ",i,total);
}
return0;
}

『叁』 猴子选大王的编程,数据结构方法

如果给好评的话,麻烦写一句:
章鱼桶是个好人


不确定具体题目,从网上摘抄来的题目:

山上有n只猴子要选大王,选举办法如下:所有猴子从1到n进行编号并围坐一圈,从第一号开始按顺序1,2,...m继续报数,凡是报m号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号。


这个题目是循环链表的应用,循环链表参见:

http://ke..com/view/178643.htm

#include<stdio.h>
#include<stdlib.h>

{
intposition;
CircularLinkedListElement*next;
};
intmain(void)
{
/*
变量声明
*/
intn,m;
inti;
CircularLinkedListElement*start;
CircularLinkedListElement*p;
CircularLinkedListElement*q;
intstep;
/*
读入猴子数量n,以及淘汰的号码m
注意输入的是正整数,为了满足一般从0开始计数的规律,读入后将n、m均减一
*/
printf("Pleaseentermonkeysnumbern:");
scanf("%d",&n);
n--;
if(n<=0)
{
fprintf(stderr,"**Error:Monkey'snumbershouldbepositive. ");
return1;
}
printf("Pleaseenterobsoletenumberm:");
scanf("%d",&m);
if(m<=0)
{
fprintf(stderr,"**Error:. ");
return1;
}
m--;

/*
创建循环链表
*/
start=(CircularLinkedListElement*)malloc(sizeof(CircularLinkedListElement));
if(start==NULL)
{
fprintf(stderr,"**Error:mallocerror. ");
return1;
}
start->position=0;
start->next=NULL;
p=start;
for(i=1;i<=n;i++)
{
q=(CircularLinkedListElement*)malloc(sizeof(CircularLinkedListElement));
if(q==NULL)
{
fprintf(stderr,"**Error:mallocerror. ");
return1;
}
q->position=i;
q->next=NULL;
p->next=q;
p=q;
}
p->next=start;

/*
开始淘汰猴子
*/
step=1;
while(start->next!=start)
{
printf("#step%d ",step++);
printf("Currentmonkeys:");
p=start;
while(p->next!=start)
{
printf("%d",p->position+1);
p=p->next;
}
printf("%d ",p->position+1);
p=start;
for(i=0;i<(m-1);i++)
p=p->next;
q=p->next;
p->next=q->next;
start=q->next;
printf("Obsoletemonkeyis:%d ",q->position+1);
free(q);
}
/*
输出猴王
*/
printf("Themonkeykingis%d. ",start->position+1);
return0;
}

英文系统,所以输出都写的是英文,见谅

『肆』 java编程猴子选猴王问题讲下思路就好了。

利用数组,进行循环
int a[]=new int[max_size];
for(i=0;i<M;i++) a[i]=0;
int flag=0;
for(i=0,j=0;(i<M)&&(flag<M-1);i++)
if (a[i]==0) {
++j;
if(j==N){
j=0;
a[i]=1;
flag++;}
}
system.out.println("i+1就是那个猴王");

『伍』 用C++编程 猴子选大王

#include <iostream>
using namespace std;
template <class datatype> class LinkList;

template <class datatype>
class Node
{
friend class LinkList<datatype>;//友元类
private:
datatype data;//计猴子号
Node<datatype> *next;
};

template <class datatype>
class LinkList
{
public:
LinkList();
void monkey(int m); //建立有m个元素的单链表
datatype Get(int a); //取单链表中第i个结点的元素值
datatype Delete(int n); //在单链表中删除第n个结点
private:
Node<datatype> *head,*tail; //单链表的结构指针
};

template <class datatype>
LinkList<datatype>:: LinkList( )
{head=new Node<datatype>; head->next=NULL;}

template <class datatype>
void LinkList<datatype>::monkey(int m)
{
int i;//整型变量i,用于计数
Node<datatype> *p,*q;//声明结构指针
p=new Node<datatype>;//为p分配空间
p->data=1; //初始化p结点data域为1
p->next=NULL;//初始化p结点next域为空
head=p;//链表头指针head赋值为p
q=p; //q赋值为p
for (i=2; i<=m; i++) //用循环结构构造链表
{
p=new Node<datatype>;//为p配内存空间
p->data=i; //初始化p结点data域为i,表示猴子号
q->next=p; //将p点加到链表尾部
q=p; //让指向链表尾部结点
p->next=NULL; //链表尾部为空
}
tail=q;//链表尾
tail->next=head;//链表尾部指向链表头,形成循环链表
}

template <class datatype>
datatype LinkList<datatype>::Delete(int n)
{
Node<datatype> *p,*q;
int j=0;
q=tail; //指向循环链表尾部
cout<<"被删除的猴子号码依次为:"<<endl;
while (q!=q->next) //剩余结点数不为1,则继续循环
{
p=q->next;//p赋值给下一个相邻结点
j++;
if(j%n==0)
{
cout<<p->data<<ends;
q->next=p->next;//删除此结点
delete p;//释放空间
p=NULL;
}
else q=p;//q指向相邻的下一个结点p
}
cout<<endl;
head=q;//head指向结点q,q为链表中剩余的一个结点
return head->data;
}

template <class datatype>
datatype LinkList<datatype>::Get(int a)
{
Node<datatype> *p;
int j;//计数器
p=head->next; j=1; //或p=head; j=0;
while (p && j<a)
{
p=p->next; //工作指针p后移
j++;
}
if (!p) throw "a值不合法";
else return p->data;
}

void main()
{
int m,n;
LinkList<int>mon;
cout<<"请输入猴子的总数:"<<endl;
cin>>m;
cout<<"请输入要删除猴子的所报的数:"<<endl;
cin>>n;
mon.monkey(m);
mon.Delete(n);
cout<<"猴王是:"<<mon.Get(1)<<"号"<<endl;
}

阅读全文

与猴编程主要说的什么相关的资料

热点内容
微信打码赚钱安卓软件 浏览:608
苹果官换机买什么版本 浏览:979
visio数据模型怎么用 浏览:179
关于驾驶的app 浏览:92
多线程编程有什么特点 浏览:453
iso文件系统 浏览:116
苹果932拦截骚扰电话 浏览:765
盲盒开箱app有哪些 浏览:422
win10激活脚本之家 浏览:191
魔鬼作坊工具包 浏览:185
ae源文件下载 浏览:520
如何将照片内容转换成pdf文件 浏览:137
浙里办app如何更换手机号码 浏览:244
电子资料文件有哪些 浏览:241
猥琐猫表情教程 浏览:599
android音频文件格式 浏览:458
漫画脸app哪里可以下载 浏览:959
购买欢乐升级欢乐豆 浏览:282
学习智能机器人用什么编程最好 浏览:655
苹果手机如何管控app 浏览:633

友情链接