| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1179 人关注过本帖
标题:大家有没有生死者游戏的具体算法分析啊
取消只看楼主 加入收藏
xy1yn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-9-21
收藏
 问题点数:0 回复次数:2 
大家有没有生死者游戏的具体算法分析啊

joseph生死者游戏**————单循环链表的应用
任务:每n个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全部一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定n人围成一圈,由第一个人数起,数到第m(m<n)人,再将他扔进大海中,如此循环地进行,直到剩下一半的乘客为止。问哪些位置是幸存者的位置(设计一个程序来求出列顺序)。
要求:利用单向循环链表存储结构模拟此过程,按照扔入大海的顺序输出各个人的编号。
测试数据:
  m的初值为9,n=30时的输出序列是?m=6,n=30时的输出序列是什么?
  要求:
输入数据:建立输入处理输入数据,输入m,n的初值,建立单循环链表。
  输出形式:选择的过程中输出扔入大海的人员编号。建立一个输出函数,将所有生者的编号输出。

搜索更多相关主题的帖子: 算法分析 死者 游戏 
2006-09-21 21:15
xy1yn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-9-21
收藏
得分:0 
谢谢了 还不是很详细 我这里有完整的代码 大家看看
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}listnode,*linklist;
linklist creat(int n){
linklist head,p,q,rear;
int i;
head=(linklist)malloc(sizeof(listnode));
head->data=1;
head->next=0;
q=head;
for(i=2;i<=n;i++){
p=(linklist)malloc(sizeof(listnode));
p->data=i;
p->next=0;
q->next=p;
q=p;
}
rear=q;
rear->next=head;
return(head);
}
void select_death(linklist head,int n,int m)
{
linklist p,q;
int count,num=n;
p=head;
while(num>n/2){
for (count=2;count<m;count++)
p=p->next;
q=p->next;
printf("%d\t",q->data);
p->next=q->next;
free(q);
p=p->next;
num--;
}
}
main(){
listnode *head=NULL;
int n,m;
printf("游戏总人数");
scanf("%d",&n);
head=creat(n);
printf("第几个被扔下");
scanf("%d",&m);
select_death(head,n,m);
}
2006-09-22 09:44
xy1yn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-9-21
收藏
得分:0 

谢谢了

2006-09-22 12:24
快速回复:大家有没有生死者游戏的具体算法分析啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026425 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved