真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言約瑟夫環(huán)問題 鏈表實(shí)現(xiàn)約瑟夫環(huán)C語言

0)個(gè)人按順時(shí)針方向圍坐一圈,m為任意一個(gè)正整數(shù)。從第一個(gè)'>約瑟夫環(huán)問題:設(shè)編號(hào)為1,2,3,……,n的n(n>0)個(gè)人按順時(shí)針方向圍坐一圈,m為任意一個(gè)正整數(shù)。從第一個(gè)

共有三種解法:我先給你一個(gè)同密碼,循環(huán)鏈表寫的吧!

在炎陵等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營銷網(wǎng)站建設(shè),外貿(mào)營銷網(wǎng)站建設(shè),炎陵網(wǎng)站建設(shè)費(fèi)用合理。

歡迎采納并追問!

#include stdio.h

#include stdlib.h

int linktype(int n,int m) //鏈表結(jié)構(gòu)

{

int people,passord;

struct node

{

int data;

struct node *next;

}NODE;

node *p,*head,*q,*pri;

head=(node *)malloc(sizeof(struct node));//創(chuàng)建一個(gè)空表

head-next=NULL;

head-data=1;

q=head;

for(int i=2;i=n;i++)

{

p=(node *)malloc(sizeof(struct node));//讓系統(tǒng)分配一塊新的內(nèi)存

p-data=i;

p-next=NULL;

q-next=p;

q=q-next;

}

q-next=head;//建立循環(huán)鏈表

pri=q;p=head;//從head開始循環(huán)

people=0;passord=1;//出去了幾個(gè)人、記錄的密碼數(shù)

while(peoplen)

{

pri=pri-next;

p=p-next;

passord++;

if(passord==m)

{

printf("%-4d",p-data);

node *temp;

temp=p;

pri-next=p-next;

p=p-next;

free(temp);

people++;passord=1;

}

}

printf("\n");

return 0;

}

int main()

{

int n,m;

printf("請(qǐng)輸入人數(shù)和密碼");

while(scanf("%d%d",n,m)!=EOF)

{

if(m0||n0)

{

printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");

continue;

}

linktype(n,m);

}

system("pause");

return 0;

}

約瑟夫環(huán)問題

簡單的方法就是拿一個(gè)數(shù)組來代表一個(gè)環(huán),然后模擬報(bào)號(hào)出圈的過程,直到所有人都出圈。

以下參考代碼

#include iostream

using namespace std;

int main()

{

int n,m,i,j,k;

cinnm;

int *p=new int[n];

for(i=0; in; i++)*(p+i)=i+1;//編號(hào)

for(j=k=0,i=1; kn; j=++j%n)//從左至右,重復(fù)掃描數(shù)組,直到所有人都出圈。

{

if(*(p+j)!=0)//用零來表示已出圈,出圈了不報(bào)號(hào)

{

if(i==m)//報(bào)號(hào)數(shù)與密碼相同,則出圈

{

coutj+1" ";//cout*(p+i-1)" ";//輸出編號(hào)

*(p+j)=0;//標(biāo)記已出圈

++k;//累記出圈人數(shù)

i=1;//報(bào)號(hào)重置

}

else ++i;//繼續(xù)報(bào)號(hào)

}

}

return 0;

}

數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)約瑟夫環(huán)問題

問題描述:joseph環(huán)問題的一種描述是:編號(hào)為1,2,3,···,n的n個(gè)人按順時(shí)針方向圍坐一圈,每人持有一個(gè)密碼(正整數(shù))。一開始任選一個(gè)正整數(shù)作為報(bào)數(shù)的上限值m,從第一個(gè)人開始按順時(shí)針方向自1開始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從他的順時(shí)針方向上的下一個(gè)人開始重新從1報(bào)數(shù),如此下去,直至所有的人全部出列為止。試設(shè)計(jì)一個(gè)程序求出出列順序。

基本要求:利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)模擬此過程,按照出列的順序印出個(gè)人的編號(hào)

測(cè)試數(shù)據(jù):m的初始值為20;n=7,7個(gè)人的密碼依次為3,1,7,2,4,8,4,首先m值為6

# include stdio.h

# define SIZE 20

int joseph(int a[],int m,int n)

{

int b[SIZE];

int i;

int flag=0;

int code;

int sum=n;

int point=0;

int num=m;

for(i=0;in;i++)

{ b[i]=i+1; }

while(sum!=0)

{

for(i=1;i=num;i++)

{ if(point=sum) point=1;

else point++;

}

num=a[point-1];

code=b[point-1];

for(i=point;i=sum;i++)

{ a[i-1]=a[i];

b[i-1]=b[i];

}

sum--;

flag++;

point--;

printf("已退出%d人,退出的人的編號(hào)為%d.\n",flag,code);

}

return 0;

}

main()

{

int m,n,i;

int array[SIZE];

printf("約瑟夫環(huán)求解,當(dāng)前設(shè)置最大人數(shù)為%d.\n",SIZE);

printf("報(bào)數(shù)上限:\n");

scanf("%d",m);

printf("總?cè)藬?shù)為:\n");

scanf("%d",n);

for(i=0;in;i++)

{

printf("第%d人的密碼為:",i+1);

scanf("%d",array[i]);

}

joseph(array, m, n) ;

return 0;

}

這是我之前做的大作業(yè),望采納。

約瑟夫環(huán)的問題,有n個(gè)人圍坐一圈,依次報(bào)數(shù)123123…凡數(shù)到3的退出此圈,循環(huán)下去,問最后留下的是哪一號(hào)

#include?stdio.h

int?fun(int?N)

{

int?i,j,k,m;

int?a[256];

m=0;

k=0;

for(i=0;iN;i++)

{

a[i]=i+1;

}?

for(j=0;jN;)

{

if(a[j]!=0)

{

k++;

}

if(k==3)

{

m++;

if?(m?==?N)

{

printf("The?last?number?is?:?%d\n",?a[j]);

return?a[j];

}

a[j]?=?0;

k=0;

}

if(j==N-1)

{

j=0;

}

else

{

j++;

}

}

}

int?main()

{

int?M;

scanf("%d",M);

printf("%d",fun(M));

return?0;

}

你的邏輯有點(diǎn)亂,寫代碼先將程序的邏輯理順了, 否則就算程序恰巧能運(yùn)行并得到你的結(jié)果, 你也不能確定它就是對(duì)的。

程序測(cè)試OK, 你可對(duì)比一下。

約瑟夫環(huán)問題:設(shè)編號(hào)為1,2,3,……,

#includeiostream

using namespace std;

#define TRUE 1

#define FALSE 0

#define OK 1

typedef int Status;

typedef double ElemType;

//-----------------------------------

//定義單向循環(huán)鏈表

typedef struct LNode

{

int number;

int data;

struct LNode *next;

}LNode, *LinkList;

//-----------------------------------

LinkList EvaluList(int n);//對(duì)單向循環(huán)鏈表進(jìn)行尾插入賦值

int size(LinkList L);//求鏈表的節(jié)點(diǎn)個(gè)數(shù)

Status ScanList(LinkList L);//遍歷單向循環(huán)鏈表

Status Joseph(LinkList L,int m);//約瑟夫環(huán)的實(shí)現(xiàn)

//-------------------------------------------------

void main()

{

int m,n;

cout"請(qǐng)輸入初始密碼(正整數(shù))和人數(shù)"endl;

cinmn;

coutendl"請(qǐng)輸入"n"個(gè)人的密碼"endlendl;

LinkList L=EvaluList(n);

coutn"個(gè)人的密碼為"endl;

ScanList(L);

coutn"個(gè)人的出列順序?yàn)?endl;

Joseph(L,m);

}

//---------對(duì)單向循環(huán)鏈表進(jìn)行尾插入賦值----------------

LinkList EvaluList(int n)

{

if(n==0)

return NULL;

int key;

cout"輸入第1個(gè)人的密碼 ";

cinkey;

LinkList L=new LNode;

L-data=key;

L-number=1;

L-next=L;

for(int i=2;i=n;i++)

{

LinkList p=new LNode;

int key;

cout"輸入第"i"個(gè)人的密碼 ";

cinkey;

p-data=key;

p-number=i;

p-next=L-next;

L-next=p;

L=L-next;

}

coutendl;

L=L-next;

return L;

}

//---------------求鏈表的節(jié)點(diǎn)個(gè)數(shù)-------------------

int size(LinkList L)

{

if(L==NULL)

return 0;

int i=1;

LinkList p=L-next;

while(p!=L)

{

i++;

p=p-next;

}

return i;

}

//---------------遍歷單向循環(huán)鏈表--------------------

Status ScanList(LinkList L)

{

LinkList p=L;

if(p==NULL)

{

cout"人數(shù)為空"endl;

return FALSE;

}

cout"第1個(gè)人的密碼 ";

coutp-dataendl;

p=p-next;

while(p!=L)

{

cout"第"p-number"個(gè)人的密碼 ";

coutp-dataendl;

p=p-next;

}

coutendl;

return TRUE;

}

//----------------約瑟夫環(huán)的實(shí)現(xiàn)-----------------------

Status Joseph(LinkList L,int m)

{

if(L==NULL)

{

cout"人數(shù)為空,出列結(jié)束"endl;

return FALSE;

}

LinkList p=L;

while(p-next!=L)

p=p-next;

for(int n=size(L); n0 ; n--)

{

cout"密碼為"m",出列編號(hào)為";

for(int i=1; i=m%n-1; i++)

p=p-next;

coutp-next-numberendl;

m=p-next-data;

LinkList q=p-next;

p-next=q-next;

free(q);

}

return OK;

}


標(biāo)題名稱:go語言約瑟夫環(huán)問題 鏈表實(shí)現(xiàn)約瑟夫環(huán)C語言
文章轉(zhuǎn)載:http://weahome.cn/article/hpdihi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部