| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:急待解决josephus 问题!!
只看楼主 加入收藏
lxhf546
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-1-19
收藏
 问题点数:0 回复次数:2 
急待解决josephus 问题!!

Josephus问题:设有n个人围坐在一个圆桌周围,现在第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,如此重复直到所有的人全部出列为止。
我的程序:
#include<stdio.h>
void deletlist(int p[],int n,int m);
void main()
{
int n,s,m,p[n],q[n],i,j,* t;
printf("数组有多长?:");
scanf("%d",&n);
printf("从第几开始报数?第几个出列?");
scanf("%d %d",&s,&m);
printf("请输入各个元素:");
for(i=0;i<n;i++)
{scanf("%d ",&p[i]);} /*将所需操作的数据输入,准备操作*/

t=&p[s-1];i=0;j=0; /*指针先指向开始位置*/
if(i==3)
{ deletlist(p,n,m);q[j]=p[m-1];j++;} /*数到4时,删除第4个元素,并把第4个元素赋给数组q*/
else
if(t=&p[n-1]) /*如果指到最后一个,马上指回*/
t=&p[0];
else
t++;
i++ ;
for(i=0;i<j-1;i++)
printf("%d",q[i]);
}
void deletlist(int p[],int n,int m) /*删除函数*/
{
int j;
if(m>n||m<1) printf("无此元素!");
else{
for(j=m;j<=n-1;j++)
p[j]=p[j+1];
}
n--;
}

搜索更多相关主题的帖子: 急待 josephus 
2007-01-19 15:18
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
收藏
得分:0 

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-01-19 15:32
lxhf546
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-1-19
收藏
得分:0 
谢谢csight!!
2007-01-19 15:54
快速回复:急待解决josephus 问题!!
数据加载中...
 
   



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

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