#include "stdio.h"
#include "stdlib.h"
#define maxsize 100
typedef struct node seqlist,*pseqlist; //定義乙個順序表
pseqlist init_seqlist() //順序表初始化
printf("creat error");
return null;
}int insert_seqlist(pseqlist pl,int i,int x) //順序表的插入,i為插入位置(陣列下標,從0開始,下同),x為插入數值
//-2 表不存在,-1 溢位,0 插入位置不合法 ,1插入成功
if(pl->length>=maxsize)
if(i<0||i>pl->length)
for(j=pl->length-1;j>=i;j--)
pl->data[j+1]=pl->data[j];
pl->data[i]=x;
pl->length++;
return 1;
}int delete_seqlist(pseqlist pl,int i) //順序表的刪除,i為刪除位置(陣列下標),返回-2 表不存在,0,刪除位置不合法,1刪除成功
if(i<0||i>pl->length-1)
for(j=i;jlength-1;j++)
pl->data[j]=pl->data[j+1];
pl->length--;
return 1;
}int josephus_seqlist(pseqlist josephus_seq, int s, int m) //求解約瑟夫問題的出列元素序列入口引數:已經存放資料的順序表,
//起始位置s,數m , 出口引數:1表示成功,0表示表中沒有元素
s1=s; //陣列下標
printf("輸出約瑟夫序列:");
for(i=josephus_seq->length;i>0;i--)
return 1;
}void main()
printf("\n 請輸入開始計數對應陣列下標:\n"); //輸入計數字置(陣列下標)和技術步長
scanf("%d",&s);
printf("請輸入計數步長:\n");
scanf("%d",&m);
josephus_seqlist(list,s,m);
printf("\n");
}
約瑟夫問題求解
終於又到了大名鼎鼎的約瑟夫問題了。約瑟夫問題也算是近代比較知名的乙個演算法問題了,有著成熟的演算法,其中有著強行模擬,還存在著一些神奇的數學方法,哈哈。今天我又來了強行模擬。啊,啊,啊。瞎。下面是問題的描述 題目描述 description 乙個旅行社要從n名旅客中選出一名幸運旅客,為他提供免費環球...
約瑟夫問題的求解!
已知有n 只猴子 以編號1,2,3,n 分別表示 圍坐一圈。從第一只猴子開始,按順序從1開始報數,數到 m 的那只猴子出列 接著再從從1 開始報數,報數到 m的那只猴子又出列 依此規律重複下,直到只剩乙隻猴子為止。輸入n和m,輸出最後剩下的猴子?此問題,即報數問題,也是約瑟夫問題!很多人一開始想到是...
約瑟夫環問題求解
約瑟夫問題如下 n個人圍成圈,依次編號為1,2,n,現在從1號開始依次報數,當報到m時,報m的人退出,下乙個人重新從1報起,迴圈下去,問最後剩下那個人的編號是多少?input amount 佇列人數 m 數到m時退出乙個人 output 最後乙個退出的人的下標 思路 用布林陣列做 我們可以把這amo...