地獄男爵之博客無限
BlogJava
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
posts - 33, comments - 70, trackbacks - 0
約瑟夫環(huán)算法(循環(huán)鏈表解決)
問題:約瑟夫環(huán)
?有編號(hào)從1到N的N個(gè)人坐成一圈報(bào)數(shù),報(bào)到M的人出局,下一位再?gòu)?開始,
?如此持續(xù),直止剩下一位為止,報(bào)告此人的編號(hào)X。輸入N,M,求出X。
約瑟夫環(huán)算法(循環(huán)鏈表解決).現(xiàn)在老師出的題還是那么....... 呵呵
?. 留個(gè)念像吧
java實(shí)現(xiàn):
public
?
class
?Josephus?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????
if
(args.length
<
2
)
{
????????????System.out.println(
"
Input?N?and?M.
"
);
????????????
return
;
????????}
????????
int
?n?
=
?Integer.parseInt(args[
0
]);
????????
int
?m?
=
?Integer.parseInt(args[
1
]);
????????
int
?point
=
0
,number
=
1
;
????????List
<
Integer
>
?list?
=
?
new
?ArrayList
<
Integer
>
();
????????
for
(
int
?i
=
1
;i
<=
n;?i
++
)
{
????????????
//
初始化鏈表
????????????list.add(i);
????????}
????????
while
(list.size()
>
1
)
{
????????????
if
(number
%
m
==
0
)
{
????????????????list.remove(point);
????????????????
--
point;
????????????}
????????????
++
point;
//
指針后移
????????????
++
number;
????????????
if
(point
>
list.size()
-
1
)
{
????????????????
//
指針越界重新開始
????????????????point
=
0
;
????????????}
????????}
????????
????????System.out.println(list.get(
0
));
????????
????}
}
?
c實(shí)現(xiàn):
#include?
<
stdio.h
>
struct?node
{
??
int
?v;
??struct?node?
*
next;
}
*
p,
*
head,h;?
//
head是頭指針,h是頭結(jié)點(diǎn)
main()
{
??
int
?n,m;
??
int
?i;
??puts(
"
請(qǐng)輸入人數(shù)n和報(bào)數(shù)上限m?:
"
);
??scanf(
"
%d%d
"
,
&
n,
&
m);
??h.next
=
NULL;?
//
頭結(jié)點(diǎn)的next為空
??head
=&
h;?????
//
頭指針指向頭結(jié)點(diǎn)
??p
=
head;??????
//
p也指向頭結(jié)點(diǎn)
??
/**/
/*
下面的循環(huán)用來建立循環(huán)鏈表
*/
??
for
(i
=
1
;i
<=
n;i
++
)
??
{
????p
->
next
=
(struct?node
*
)malloc(sizeof(struct?node));
????p
=
p
->
next;
????p
->
v
=
i;
????
if
(i
!=
n)
????
{
??????p
->
next
=
NULL;
????}
????
else
????
{
??????p
->
next
=
head
->
next;
????}
??}
??p
=
head;
??p
=
p
->
next;?
//
p指向第一個(gè)結(jié)點(diǎn)
??m
%=
n;
//
當(dāng)m>n時(shí)有用
??
while
(p
!=
p
->
next)
??
{
????
for
(i
=
1
;i
<=
m
-
2
;i
++
)
????
{
??????p
=
p
->
next;
????}
????printf(
"
%d??
"
,p
->
next
->
v);
????p
->
next
=
p
->
next
->
next;
????p
=
p
->
next;
??}
??printf(
"
%d
"
,p
->
v);
}
posted on 2006-06-07 23:37
地獄男爵(hellboys)
閱讀(13339)
評(píng)論(19)
編輯
收藏
FeedBack:
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-15 10:36 |
shaoshuai
挺好挺好
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-16 00:00 |
doyphine
你的程序有點(diǎn)問題,有待解決喲!!你自己代幾個(gè)數(shù)進(jìn)去看看就知道了,我只試了C的
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-16 19:43 |
有點(diǎn)傻
看不懂哦~
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-17 11:30 |
榆錢
你的程序的密碼好像就是剛開始排列時(shí)每個(gè)人的序號(hào),是嗎??而且你的輸出有問題,挺大的問題
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-17 11:39 |
hellboys
java的測(cè)試過,沒問題。 c的只作參考(未測(cè)試過)。
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2006-10-23 22:24 |
tian
very good Thank you very much.
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)[未登錄]
2008-01-20 14:15 |
hhh
我也覺得,雖然不同的語言,但算法流程應(yīng)該相同。可是你的呢,兩種語言都不一樣~~~
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2008-03-27 21:06 |
22
根本就不對(duì)
C語言的!
回復(fù)
更多評(píng)論
#
約瑟夫環(huán)算法C++
2008-05-20 17:43 |
呂起民
enum{N = 10,M=7};
int main(int argc, char* argv[])
{
char array[N] = {1,2,3,4,5,6,7,8,9,10};
int nCount = N;
int i = 0;
while(nCount > 1)
{
i = (i+M-1)%nCount;
printf("%d\n",array[i]);
memcpy(array+i,array+i+1,nCount-i);
nCount --;
// array[nCount] = 0;//可省此行
}
printf("約瑟夫=%d\n",array[0]);
return array[0];
}
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2008-10-30 17:32 |
dove52208@126.com
呵呵 在#include <stdio.h>
后加上#include <stdlib.h>之后 C的就可以實(shí)現(xiàn)了!!
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2009-02-01 17:56 |
johnpzd
原文思路很經(jīng)典,佩服!!!
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2009-07-17 11:47 |
s
hh
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2009-07-17 11:47 |
s
ddddddddddddddddddddd
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2009-10-10 23:01 |
冷如冰
C語言描述的不是很準(zhǔn)確
如果n = 10,m = 3,則程序的輸出可能就會(huì)出現(xiàn)問題。
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2009-10-29 21:46 |
wx
挺好的,c的漏粘include<stdlib.h>,因?yàn)橛杏玫絤alloc函數(shù)。
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2010-03-17 11:39 |
teamoGod
其他的沒問題,只有當(dāng)m=1的時(shí)候不對(duì)。
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2010-06-09 21:03 |
huchuhan
哥們啥是鏈表?
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)[未登錄]
2011-09-12 16:54 |
Sky
@huchuhan
看不懂
!
回復(fù)
更多評(píng)論
#
re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
2012-03-19 10:28 |
527055685@qq.com
約瑟夫環(huán)的變體-37個(gè)奴隸問題,我也用了循環(huán)鏈表去做
#include <stdio.h>
#include <stdlib.h>
#define MAX 111 //總的奴隸數(shù)
#define DIE 3 //數(shù)K個(gè),第K個(gè)要被殺
typedef struct link{
int value; //用了保存奴隸的編號(hào)
struct link *next;
}* loop_link;
void fun(struct link *slave);
int main(void)
{
loop_link slave=NULL,current,head;
int i;
for(i=1;i<=MAX;i++)
{
current=malloc(sizeof(struct link));
current->value=i;
current->next=NULL;
if(slave==NULL)
{
slave=current;
head=slave;
}
else
{
slave->next=current;
slave->next=slave->next;
slave=slave->next;
}
}
slave->next=head; /*將最后一個(gè)奴隸指向第一個(gè)奴隸,最終在這里形成一個(gè)循環(huán)鏈表 */
slave=head;
fun(slave);
return 0;
}
void fun(struct link *slave)
{
int j;
struct link* current;
if(slave->value==slave->next->value)
printf("這個(gè)編號(hào)為%d的奴隸不用被殺\n",slave->value);
else
{
for(j=1;j<DIE;j++)
{
current=slave;
slave=slave->next;
}
current->next=slave->next;
current=slave;
slave=current->next;
free(current);
fun(slave);
}
}
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright ©2025 地獄男爵(hellboys) Powered By:
博客園
模板提供:
滬江博客
<
2010年6月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
隨筆分類
bash
vim(1)
系統(tǒng)綜合(12)
編程語言(c/c++ java python sql ......)(7)
隨筆(6)
隨筆檔案
2010年11月 (1)
2009年3月 (2)
2008年12月 (1)
2008年11月 (1)
2008年6月 (1)
2007年12月 (1)
2007年11月 (1)
2007年4月 (2)
2007年3月 (1)
2006年11月 (1)
2006年10月 (1)
2006年9月 (2)
2006年8月 (1)
2006年7月 (2)
2006年6月 (6)
2006年5月 (3)
2006年4月 (5)
2006年3月 (1)
文章檔案
2005年12月 (1)
相冊(cè)
SARA--以后LP的標(biāo)準(zhǔn)?
恍惚的美麗(2007年的五一)
連接
差沙
我以前blog地址
聰明的豬(cleverpig)
最新隨筆
1.?Open MacVim tabs from command-line
2.?優(yōu)化MySQL數(shù)據(jù)庫(kù)性能的八種方法
3.?Hadoop分布式文件系統(tǒng)(HDFS)的安全隱患
4.?sssh v2.0 - 快速 ssh 登陸腳本
5.?mod_python在 RHEL/CentOs 64 位編譯上的問題
6.?我想應(yīng)聘中國(guó)男子國(guó)家足球隊(duì)主教練一職
7.?Android中文文檔v0.1 beta低調(diào)發(fā)布,期待更多同學(xué)來參加review
8.?歡迎訪問Android中國(guó)
9.?ActiveMQ4.1 +Spring2.0的POJO JMS方案 擴(kuò)展,以更加實(shí)用(基于ss).二
10.?ActiveMQ4.1 +Spring2.0的POJO JMS方案 擴(kuò)展,以更加實(shí)用(基于ss)
搜索
最新評(píng)論
1.?re: Mysql 集群簡(jiǎn)介和配置[未登錄]
@dustin
動(dòng)不動(dòng)就說不穩(wěn)定,人家島國(guó)的有個(gè)很大很大的社交網(wǎng)站就是這么搞的。你有啥子證據(jù)說不穩(wěn)定,服了你。
--菜鳥
2.?re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--527055685@qq.com
3.?re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)[未登錄]
@huchuhan
看不懂
!
--Sky
4.?re: Mysql 集群簡(jiǎn)介和配置
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--tmeper
5.?re: 約瑟夫環(huán)算法(循環(huán)鏈表解決)
哥們啥是鏈表?
--huchuhan
閱讀排行榜
1.?Mysql 集群簡(jiǎn)介和配置(61968)
2.?約瑟夫環(huán)算法(循環(huán)鏈表解決)(13339)
3.?妙解網(wǎng)絡(luò)多臺(tái)dhcp引起的IP沖突 (5903)
4.?Compass - springside 中的應(yīng)用(5432)
5.?mod_python在 RHEL/CentOs 64 位編譯上的問題(3657)
評(píng)論排行榜
1.?約瑟夫環(huán)算法(循環(huán)鏈表解決)(19)
2.?Compass - springside 中的應(yīng)用(18)
3.?Mysql 集群簡(jiǎn)介和配置(7)
4.?不要一輩子靠技術(shù)生存(7)
5.?我想應(yīng)聘中國(guó)男子國(guó)家足球隊(duì)主教練一職(5)
主站蜘蛛池模板:
久久亚洲伊人中字综合精品
|
在线观看亚洲人成网站
|
久久精品成人免费网站
|
日韩免费a级毛片无码a∨
|
国产色爽免费视频
|
亚洲一级毛片免费在线观看
|
色播在线永久免费视频
|
亚洲制服丝袜一区二区三区
|
免费视频精品一区二区
|
亚洲大片在线观看
|
国产色婷婷精品免费视频
|
精品一区二区三区免费毛片
|
成人免费毛片内射美女APP
|
亚洲免费视频网址
|
老司机在线免费视频
|
亚洲制服丝袜一区二区三区
|
亚洲综合色成在线播放
|
羞羞视频免费网站在线看
|
亚洲综合图片小说区热久久
|
亚洲免费电影网站
|
九九免费久久这里有精品23
|
免费v片在线观看
|
人人爽人人爽人人片A免费
|
免费一级毛片清高播放
|
久草免费在线观看视频
|
精品日韩99亚洲的在线发布
|
亚洲色欲久久久综合网东京热
|
国产精品综合专区中文字幕免费播放
|
亚洲国产综合久久天堂
|
亚洲看片无码在线视频
|
亚洲日韩中文无码久久
|
免费国产黄网站在线观看视频
|
亚洲精品无码专区久久同性男
|
一级毛片无遮挡免费全部
|
亚洲粉嫩美白在线
|
久久亚洲中文字幕精品有坂深雪
|
免费人成网站在线观看10分钟
|
99免费精品视频
|
亚洲国产午夜福利在线播放
|
三年片免费观看大全国语
|
亚洲高清免费在线观看
|