S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

c++ 面试题

Posted on 2009-03-08 18:30 S.l.e!ep.¢% 阅读(285) 评论(0)  编辑 收藏 引用 所属分类: Interview
有13个小朋友手拉手围成一圈,(编号分别为1--13),从1开始1,2,3,4报数,每次数到4的出局,求最后剩下的5个小朋友的号码
不能用链表等 只能用数组 for while if语句等

 1#include <iostream>
 2using namespace std;
 3
 4// 17:08 - 17:45
 5
 6int main()
 7{
 8    int array[13= {0};
 9    int nIndex = 0;
10
11    while(true)
12    {
13        int nCount1 = 0;
14
15        forint i = 0; i < 13; i+=1 )
16        {
17            if( array[i] == 0 )
18                nCount1++;
19        }

20
21        if( nCount1 <= 5 )
22            break;
23
24        //////////////////////////////////        
25        int nCount2 = 0;
26
27        whiletrue )
28        {
29            if( array[nIndex] == 0 )
30               nCount2++;
31            
32            if( nCount2 >= 4 )
33                break;
34
35            nIndex++;
36            nIndex%=13;
37        }

38
39        array[nIndex] = 1;
40
41    }

42
43    for(int i = 0; i < 13; i+=1 )
44    {
45        if( array[i] == 0 )
46            cout << i+1 << " ";
47    }

48
49    cout << endl;
50
51    return 0;
52}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理