海洋主题餐厅模型:数据结构与算法中的一点问题(c语言版)

来源:百度文库 编辑:高考问答 时间:2024/05/09 04:28:07
任选两道题即可
老师留的大作业:1,问题描述:
设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此反复直到所有的人全部出列为止。
以n=8,s=1,m=4为例,若初始的顺序为 n1,n2,n3,n4,n5,n6,n7,n8。则问题的解为n4,n8,n5,n2,n1,n3,n7,n6。 (双向链表)
2,二 迷宫问题:求从起点到终点的简单路径。(栈)
3,三 图元识别
数字化图像是一个m×m 的像素矩阵。在单色图像中,每个像素的值要么为0,要么为1,值为0的像素表示图像的背景,而值为1的像素则表示图元上的一个点,称其为图元像素。
如果一个像素在另一个像素的左侧、上部、右侧或下部,则称这两个像素为相邻像素。识别图元就是对图元像素进行标记,当且仅当两个像素属于同一图元时,它们的标号相同。
4,编写基于HUFMAN-CODE的译码和解码算法。
要求:
(1)输入一段字符串,统计其中每个字符的频度;
(2)求每个字符的HUFMAN-CODE;
(3)对(1)中的字符串译码;
(4)对(3)中的译码再解码.
哪位同学会做?帮帮忙
当然给分呀!!谢谢

#define N 1000/*输入n允许最大值*/

main()
{
int n,s,m;
int a[N],b[N];
int i,j=0,k,l=0,sum=0;
printf("input n:");
scanf("%d",&n);

printf("input m:");
scanf("%d",&m);

printf("input s:");
scanf("%d",&s);

for(i=1;i<=n;i++)
{
a[i]=1;
b[i-1]=0;
}
for(i=s;;i++)
{
if (i==n+1)
i=1;
sum=0;
for(k=1;k<=n;k++)
sum+=a[k];
if(sum==0)break;

if(a[i]==1)
{
j+=1;
if(j%m==0)
{
a[i]=0;
b[l]=i;
l++;
}
}
}
for(i=0;i<n;i++)
printf("n%d ",b[i]);
}

或者:
#define N 1000

main()
{
int n,s,m;
int a[N];
int i,j=0,k,l=0,sum=0;
printf("input n:");
scanf("%d",&n);

printf("input m:");
scanf("%d",&m);

printf("input s:");
scanf("%d",&s);

for(i=1;i<=n;i++)
{
a[i]=1;
}
for(i=s;;i++)
{
if (i==n+1)
i=1;
sum=0;
for(k=1;k<=n;k++)
sum+=a[k];
if(sum==0)break;

if(a[i]==1)
{
j+=1;
if(j%m==0)
{
a[i]=0;
printf("n%d ",i);
l++;
}
}
}
}