導航:首頁 > 編程知識 > 猴編程主要說的什麼

猴編程主要說的什麼

發布時間: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;
}

閱讀全文

與猴編程主要說的什麼相關的資料

熱點內容
圓弧刀東槽如何編程 瀏覽:870
js怎麼單擊改變標簽里的文字 瀏覽:760
實例配置文件里的sid是什麼 瀏覽:43
ps文件模糊 瀏覽:192
葉檀財經推出過什麼購物APP 瀏覽:875
linux硬碟檢測 瀏覽:431
如何用路由器降低網路延遲 瀏覽:601
aix分區root密碼 瀏覽:439
運動鞋買鞋上什麼app 瀏覽:904
NSA工具下載 瀏覽:918
函數代碼在哪個文件夾 瀏覽:213
微信應用怎麼代碼添加快捷方式 瀏覽:371
用數據說話是最有力的什麼 瀏覽:27
圖片文件被鎖定無法打開 瀏覽:768
wr886nv2升級 瀏覽:490
移動硬碟視頻文件無法刪除 瀏覽:417
如何查看網路監控 瀏覽:132
列印機如何連接到網路列印機 瀏覽:181
vmlinux安裝tools 瀏覽:768
波形文件轉mp3 瀏覽:803

友情鏈接