| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1035 人关注过本帖
标题:求解,这个函数看不懂。。。最好逐句解释一下
只看楼主 加入收藏
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:2 
兄弟,这算法让我自己想是绝对想不到的;刚才调试了下,弄清了算法的基本思路,大致如下:
程序代码:
void Josegh(void)
{
    int i,j;                
    int s1,w; //s1跟踪数数的步调(初始值为1);w为中间变量,用来保存要出列的人的序号            
    s1=s;                 
    for(i=1;i<=n;i++)      
        p[i-1]=i;//用数组存储序号
    for(i=n;i>=2;i--) //n=100     
    {
        s1=(s1+m-1)%i; //此时的s1为数到10的人的序号,s1=0以下特殊处理      
        if(s1==0)//刚好为未出列的最后一员             
            s1=i;
        w=p[s1-1];//中间变量存储要出列的人的序号            
        for(j=s1;j<=i-1;j++)  //若出列的人不是最后一个,则从出列的人以后依次向前移动一位 
            p[j-1]=p[j];
        p[i-1]=w; //移动后空出的最后以为存储w即出列的人的序号      
    }//这样反复循环后,数组中存储的为依次出列的序号的逆序,下面有用到for循环逆序输出的语句就是刚好要出列的人的依次序号

}

A real warrior never quits.
2011-08-15 22:19
leaf_yyl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:19
专家分:104
注 册:2011-8-13
收藏
得分:0 
原来是南开3级上机考试题目,要为考试的话你不用想得,看得懂就OK了,偶那个是为了效率和空间的算法,考试不会那么偏的
2011-08-15 23:21
快速回复:求解,这个函数看不懂。。。最好逐句解释一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014580 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved