免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: dominic99
打印 上一主题 下一主题

Intel一道笔试面试题目,各位有空看一下. [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-10-31 11:02 |只看该作者
这样可以吧

  1. #define TOTAL 15;
  2. int xxxx(int N)
  3. {
  4.         int ring[TOTAL] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} //全是1
  5.         int nextstart = 0, counter=0;
  6.         for (i =1; i<TOTAL; i++){
  7.                 counter = 0;
  8.                 while(counter <N) {
  9.                         if (____ring[nexstart = (++nextstart) % TOTAL] == 0___________)
  10.                                 ( _____continue_________  ;    )
  11.                         else
  12.                                 (____counter ++________;         )
  13.                 }
  14.                 ring[nextstart]=0
  15.         }
  16.         return nextstart +1;
  17. }

复制代码

[ 本帖最后由 unicorns 于 2005-10-31 11:15 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2005-10-31 11:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
23 [报告]
发表于 2005-10-31 13:01 |只看该作者

re

#include <stdio.h>
#include <stdlib.h>

#define TOTAL 778
#define N     23569
int main()
{
        int pp[TOTAL];
       
        int left = TOTAL;
        int i = 0;
        int cur = 0;

        memset(pp, 1, TOTAL);
       
        while(left >= 1)
        {
               
                for(i=0; i<N; i++)
                {
                        cur++;
                        while(!pp[cur - 1])
                        {
                                cur++;
                                if(cur == TOTAL + 1)
                                {
                                        cur = 1;
                                }

                        }
                        if(left == 1)
                        {
                                printf("Result Num: %dn", cur);//结果输出
                                left = 0;
                                break;
                        }
                       
                        if(i == N - 1)
                        {
                                left--;
                                pp[cur - 1] = 0;
                        }
                       
                        if(cur == TOTAL)
                        {
                                cur = 0;
                        }
                }
               
        }

        return 0;
}

论坛徽章:
0
24 [报告]
发表于 2005-10-31 14:41 |只看该作者
《具体数学(concretemath)》中讲到的JOSEPHUS问题就是特例N=2
  1. #define N 3
  2. static int basic[N];

  3. void init()
  4. {
  5.     int i;
  6.     basic[1] = 1;
  7.     for(i=2; i< N; i++)
  8.     {
  9.         basic[i] = (basic[i-1] + N % i - 1) % i + 1;
  10.     }
  11. }

  12. int last_val(int val)
  13. {
  14.     int k, n, m;

  15.     k = val / N;
  16.     n = val % N;
  17.     if(k == 0) return basic[n];
  18.     if( (m = last_val(k * (N - 1) + n) ) <= n )
  19.         return k * N + m;
  20.     else
  21.         return (m - n) + (m - n - 1) / (N - 1);
  22. }

  23. int main(int argc, char *argv[])
  24. {
  25.     init();

  26.     printf("last value : %dn", last_val(atoi(argv[1])));
  27. }
复制代码


这个能看懂的话,算法入门了

[ 本帖最后由 yzc2002 于 2005-10-31 14:44 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2005-10-31 16:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
26 [报告]
发表于 2005-10-31 16:39 |只看该作者
原帖由 Yarco 于 2005-10-31 16:14 发表
楼上的, 算法什么的, 比较全, 并且英文版本的, 哪里有下?
比如: 楼上您帖的这个.

有些细节还不太明白...

http://online.ysu.edu.cn/personal/yyf/weitao/taocp/

论坛徽章:
0
27 [报告]
发表于 2005-11-07 19:44 |只看该作者
最烦这种填空哈,就像又在考软件设一样!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP