Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379254
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:35:48

ddr_ddr:考虑一下,如果从n=1开始:
1:n为偶数,返回值为n;
2:n为奇数,返回值为(n-1)/2+1;
原因是:第一轮吃1,3,5,7。。。。n-1;(n 为偶数)
第二轮吃:2,6,10,。。。。2m+1;(m为自然数列)
所以就有结果了:)
(发表于2004-4-18 15:16:00)

唐克83:为啥不用循环队列?
将老鼠数依次赋给数组a[i];
假如有n 个老鼠,i<=n.
假如从第s个老鼠开始吃,每隔m个老鼠吃一个,可用
s=(s+m-1)%n;cout<然后用a[j]=a[j+1];删去吃到的老鼠。经过循环以后
最后输出a[1];ok.解决了!
是不是很简单,也不失其一般性!
菜鸟第一次发言,若错见谅!
(发表于2004-4-20 18:41:00)

唐克83:漏了一点:if(k==0)s=n;
将上式s=(s+m-1)%n; 改为
k=(k+m-1)%n;将cout< 抱歉,抱歉!
(发表于2004-4-20 18:46:00)

tangkl:请吧你83代表的意思讲出来是。
(发表于2004-7-5 16:05:00)

笨笨笑:http://blog.vckbase.com/smileonce/archive/2004/11/09/1390.aspx
(发表于2004-11-24 16:40:00)

tuohai_wu:我也写了一段..
//总数 int MouseMax 
//开始数目int StartMouse
int fun(int iMouseMax,int iStartMouse)
{
int iCo = 0;  //一共被吃的个数
BOOL ifNum = true; //是否该吃
int iEndMouse; //最后吃的那只编号——我们要的答案

//存放老鼠,被吃为零,存在为1
    char *pcMouNum = new char [iMouseMax];
memset(pcMouNum,1,iMouseMax);

    while(1)
{
for(iStartMouse;iStartMouse<=iMouseMax;iStartMouse++)
{
if(pcMouNum[iStartMouse]==0) continue;
if(ifNum)
{
pcMouNum[iStartMouse] = 0;
iCo+=1; 
iEndMouse = iStartMouse;
}
ifNum = !ifNum;
}

iStartMouse = iStartMouse - iMouseMax;

//吃到最后肯定会剩下两只,按题意最后一只应该不会被吃(要是理解错误,别怪我!~0~)
if (iCo==iMouseMax-1) break;
}
    delete[] pcMouNum;
return iEndMouse;
}
(发表于2005-9-30 13:19:00)

yunteng:#include
#include
#include

typedef struct list
{
int number;
struct list *next;
}*listlink;

listlink Init(int mouse)
{
int mousenum =mouse;
int num=1;
listlink head = new list;
head->number =1;
head->next = head;
listlink p= head;
for(int i=1;i {
listlink q=new list;
q->number=i+1;
p->next =q;
q->next=head;
p=p->next;
}
 return head;

}

listlink catpositionbefore(int mouse,listlink head)
{
srand((unsigned)time(NULL));
int mousenum =mouse;
mousenum =rand()%mousenum;
// cout<<"rand()="< listlink pcat =head;
if(mousenum)
{
for(int i=1;i {
pcat =pcat->next;
}
}else
{
for(int i=1;i {
pcat =pcat->next;
}
}
cout<<"the position of cat is: "<next->number< return pcat;
}
(发表于2007-2-10 9:50:00)

yunteng:void main()
{
cout<<"Please input the number of mouse(exit to 'q'):";
int mousenum=0;;
while(cin>>mousenum)
{
if(mousenum<1)
break;
 listlink pmousehead = Init(mousenum);
 listlink pmouse = catpositionbefore(mousenum,pmousehead);
 while(--mousenum)
 {
pmouse->next=pmouse->next->next;
pmouse=pmouse->next;
// cout<<"current mouse position ="<number<  }
cout<<"only mouse number:"<number< cout<<"Please input the number of mouse again(exit to 'q'):";

}
}
(发表于2007-2-10 9:51:00)

..........................................................................
--------------------next---------------------

阅读(87) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~