问题描述
- (20分)10个小朋友编号成1-10围成一个圈圈报数
-
(20分)10个小朋友编号成1-10围成一个圈圈报数,报到3的小朋友退出,求最后剩下的小朋友是几号?用C语言实现
解决方案
http://blog.csdn.net/newnewman80/article/details/5989449
解决方案二:
稍微修改下
#include<iostream>
#include<malloc.h>
using namespace std;
struct node
{
int no; //代表编号结点的数据
int code;//代表密码结点的数据
node *next;//代表后一个结点的地址
};
int main()
{
int m,n,i,j;
node *p,*q,*first;
cout<<"请输入m的初始值 m:";
cin>>m;
cout<<"请输入人数 n:";
cin>>n;
for(i=1;i<=n;i++)
{
if(i==1)
{
first=p=(node*)malloc(sizeof(node));
if(p==0)
return 0;
}
else
{
q=(node*)malloc(sizeof(node));
if(q==0)
return 0;
p->next=q;
p=q;
}
cout<<"请输入第 "<<i<<" 个人的密码: ";
cin>>(p->code);
p->no=i;
}
p->next=first; //让表尾指向表头形成循环链表
p=first;
cout<<"出列顺序为: ";
for (j=1;j<=n;j++)
{
for(i=1;i<m;i++,p=p->next);
m=p->code;
cout<<p->no<<" ";
p->no=p->next->no;
p->code=p->next->code;
q=p->next;
p->next=p->next->next;
free(q);
}
cout<<endl;
return 0;
}
解决方案三:
经典的约瑟夫算法,了解了算法思想,百度搜一个就好了。
解决方案四:
http://blog.csdn.net/xianfajushi/article/details/24846979
解决方案五:
猴子选大王——CSharp数组
时间: 2024-10-03 00:41:19