CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

算法...

楼主JavaCCC(管理)2005-04-14 18:54:38 在 专题开发/技术/项目 / 数据结构与算法 提问

1   2   3   4   5............m   (m   个)  
  按照1-m的顺序围一个圆圈,从第一个开始数,每数到第n   个,  
  就要去掉这个数,这样一直下去   ,直到只有最后   (n〈m)  
   
  要求:        
  输入数据:   输入m   n             m   和n   为整数。  
  输出形式:   输出猴最后剩的那个几个数   建立一个函数来实现此功能。.....  
  问题点数:80、回复次数:5Top

1 楼MagicCarmack(MagiC++)回复于 2005-04-14 20:16:55 得分 0

这是不就是那个数据结构书上的问题!  
   
  建议楼主看书Top

2 楼chenyec(想飞)回复于 2005-04-14 20:19:16 得分 0

晕~  
   
  void   fun   (   const   int   m,   const   int   n   )  
  {  
            int   s   =   0;  
            while   (   n   >   0   )  
            {  
                  for   (   int   i   =   s;   i   <=   m;   i++   )  
                            s   =   i%n;  
                  cout   <<   a[s];  
                  for   (   int   j   =   s;   j   <   n-1;   j++   )  
                          a[j]   =   a[j+1];  
                  n--;  
              }  
  }Top

3 楼jp1984(mathfrog)回复于 2005-04-14 21:43:11 得分 0

模拟即可。  
  Top

4 楼wlwlwl(公公)回复于 2005-04-15 08:33:51 得分 0

栈的应用Top

5 楼PPc_Pc(嘿嘿)回复于 2005-04-15 13:07:08 得分 80

#include   <iostream.h>  
   
  void   main()  
  {  
      //建立猴子数组  
      const   int   num=10;         //猴子数  
      int   interval;                 //每次数interval个猴子,便让该猴子离开  
      int   a[num];                     //猴子数组  
      //给猴子编号  
      for(int   i=0;   i<num;   i++)       //猴子的编号只与猴子数有关  
          a[i]=i+1;  
      //输入数猴子间隔  
      cout   <<"please   input   the   interval:   ";         //输入一个数猴子个数  
      cin   >>interval;  
      //将全体参加的猴子输出  
      for(int   i=0;   i<num;   i++)         //顺序输出开始时的猴子编号  
          cout   <<a[i]   <<",";  
      cout   <<endl;  
   
      int   k=1;             //标识处理第k个离开的猴子  
      int   i=-1;           //数组下标(下一个值0就是第一个猴子的下标)  
      //处理获胜前的猴子  
      while(1){  
          //在圈中数interval个猴子  
          for(int   j=0;   j<interval;   ){  
              i=(i+1)%num;               //对下标加1求模  
              if(a[i]!=0)                 //如果该元素的猴子在圈中,则承认数数有效  
                  j++;  
          }  
          if(k==num)   break;         //该猴子是最后一个(胜利者)吗?  
          cout   <<a[i]   <<",";       //输出离开的猴子之编号  
          a[i]=0;                             //标识该猴子已离开  
          k++;                                   //准备处理下一个圈中猴子  
      }  
      //   语句跳转到此  
      cout   <<"\nNo."   <<a[i]   <<"   boy've   won.\n";         //输出胜利者  
  }      
  Top

相关问题

  • 算法
  • 算法
  • 算法!
  • 算法
  • 算法
  • 算法啊算法!!
  • 梭哈算法
  • MD5算法
  • 求算法!
  • 算法问题

关键词

  • 猴子
  • interval
  • const

得分解答快速导航

  • 帖主:JavaCCC
  • PPc_Pc

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo