| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:请大家看看这个程序怎么实现
只看楼主 加入收藏
wuxianyi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-2-10
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
请大家看看这个程序怎么实现
昨天参加H3C的最后一轮面试,问了一道编程题,当时没有弄出来,现在给大家看看
题目:有一个大小是1000的数组,赋值是从0~999。现在开始删除,从第一个元素开始,每隔两个删除一个数(比如第一个删0,然后删3,接着是6,以此类推),当删除到最后的时候,再调回头去删除未被删除的元素,还是按原来的规则隔两个删除一次。不断的回头,不断的删除。问题时最后会剩几个数,数分别是多少?编程实现,要求一轮删除完就显示删除的数,再进行下一轮,再显示删除的数,不断的往复,直到显示到最后不能删除为止。
不知道我描述清楚了没有,我想见过这个题目的应该可以搞定,如果第一次见,要在10分钟内搞定,恐怕要一定的实力。当时和我一起进第三面的一共7个人,只有1个人弄出来了(那个人的确很NB)。大家试试吧!!!
2010-05-24 19:26
lzjpc500
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-5-24
收藏
得分:3 
#include <stdio.h>
main()
{
    int a[1000]={0};
    int i,j,k,l;
    j=k=l=0;i=1;
    do
    {
        
        if(a[k]==0) j++;//a[k]==0表示这个人还在队列中
        if(j==2)//点数
        {
            if(l==10)
            {
                printf("\n");//输出10个数据就换行
                l=0;
            }
            printf("%d ",k+1);//输出出列的人的号码
            a[k]=1;//a[k]出列
            l++;
            i++;
            j=0;
        }
        k++;
        if(k==1000) k=0;

    }while(i!=1001);
}
楼主看下这个行不行?

[ 本帖最后由 lzjpc500 于 2010-5-24 22:05 编辑 ]
2010-05-24 21:38
wuxianyi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-2-10
收藏
得分:0 
回复 2楼 lzjpc500
嗯。差不多,意思你是明白了,但是没有详细的按面试官的要求。这是一个约瑟夫环的问题,大部分用的都是循环链表,
意思就是这个意思
2010-05-24 21:57
wuxianyi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-2-10
收藏
得分:0 
回复 2楼 lzjpc500
不好意思,我仔细研究了一下你的程序,好像有点问题。和我要的有出入。
我想声明的是我的问题和约瑟夫环不是很一样,他的出列要求是固定的(每隔两个删一次),而且这不是一个环状链表,是一个数组,在一遍删除结束以后要进行第二遍,这个第二遍就是回到开头的那个未被删除的数字。而且数组的初始化已经完成,是从0~999,您需要从0,3,6,9....到最后999
再回到开头的未被删除的1,5,10...要求是每删除一个就打印一个数,最后剩的就是未被选中的。
楼上再试试。
2010-05-24 22:18
lzjpc500
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-5-24
收藏
得分:0 
哦,我也研究了一下题目,你这个问题是约瑟夫问题的变身。条件多了点而已。我的程序确实不太符合要求哦~
不过楼主。数组也可以是链表呀,不一定要有指针才能算的。“ if(k==1000) k=0;”这条语句就已经把数组的首尾连接起来成了一个环
2010-05-25 10:27
LUNNAN
Rank: 2
等 级:论坛游民
帖 子:30
专家分:44
注 册:2010-5-23
收藏
得分:3 
这不是与报数问题有点类似吗?
2010-05-25 10:42
快速回复:请大家看看这个程序怎么实现
数据加载中...
 
   



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

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