实验1 顺序表的基本操作
一、实验目的
熟练应用顺序表存储结构,实现顺序线性表上的初始化、查找、插入、删除等基本操作。
二、实验软硬件要求
硬件:一台安装了windows操作系统的计算机。
软件:C语言编程工具
三、实验内容(需写出源程序,行距16磅)
用顺序表存储结构,求解以下问题:
2、求解约瑟夫环问题:已知 n 个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为 1 的人开始报数,数到 m 的那个人出圈;他的下一个人又从 1 开始报数,数到 m 的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。
- 输入玩游戏人数n和计数m
- 输出依次出圈的玩家编号和胜利者编号
2、求解约瑟夫环问题:
#include<stdlib.h>
#include<stdio.h>
int main ()
{int n,q,i=0,count=1,flag=0;
printf("请输入人数:\n");
scanf("%d",&n);
printf("报到第几个数要淘汰:\n");
scanf("%d",&q);
int a[n];
for (i=0;i<n;i++)
{a[i]=0;//给每个人设置生的状态
}
i=0;
printf("输出被淘汰的人顺序:\n");
while(1)
{ if (flag==n-1)break;
if(a[i]==1)i++;
else{if (count==q)
{a[i]=1;//设置淘汰状态
flag++;//淘汰人数加一
printf("%d ",i);
count=1;//重置报数
i++;
}
else
{
count++;
i++;
}
}
if(i==n)i=0;//数组下标从0开始
}
printf("\n胜利者 :");
for(i=0;;i++)
{if(a[i]!=1)
{printf("%d",i);
break;
}
}
return 0;
}
结果
我的其他专栏:
关注我了解更多