黑马程序员技术交流社区

标题: 基础测试题,这个怎么写啊? [打印本页]

作者: Lbabywei1988    时间: 2015-3-10 16:16
标题: 基础测试题,这个怎么写啊?
耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
作者: 喧闹的世界    时间: 2015-3-10 16:23
用什么语言写的?如果用面向对象的思维就很好做。c语言就要想下算法了
作者: hastar    时间: 2015-3-10 16:57
int main()
{
        int sz[16];
        int i, j, count;
        for(i = 1; i < 16; i++)
                sz[i] = 1;

        i = 1;
        j = 1;
        count = 0;
        while(1)
        {
                if(i == 16) i = 1;

                while(sz[i] == 0)
                {
                        i++;
                        if(i == 16) i = 1;
                }
               
                if(j == 3)
                {
                        sz[i] = 0;
                        j = 0;
                        count++;
                        printf("%d\t", i);

                        if(count == 14)
                                break;
                }
                j++;
                i++;
        }

        for(i = 1; i < 16; i++)
        {
                if(sz[i] != 0)
                {
                        printf("\nThe last one is %d\n", i);
                        break;
                }
        }


        return 0;
}


作者: xiezhongmin    时间: 2015-3-10 17:01
这个最精简:
  1. #include <stdio.h>

  2. int getAge(int i)
  3. {
  4.         if(i < 1) return -1;
  5.         if(1 == i) return 10;
  6.         return 3 + getAge(i-1);
  7. }

  8. int main()
  9. {
  10.         printf("%d",getAge(8));
  11.         return 0;
复制代码

作者: xiezhongmin    时间: 2015-3-10 17:03
不好意思我粘贴错了那是第9题的,下面是这题的代码:
  1. #include <stdio.h>

  2. int notYouda(int N)
  3. //在剩下的N个人中数3
  4. {
  5.         if(N == 1) return 0;
  6.         else return ((notYouda(N-1))+3)%N;
  7. }

  8. int main()
  9. {
  10.         printf("%d",notYouda(15) + 1);       
  11.         return 0;
  12. }
复制代码

作者: xiezhongmin    时间: 2015-3-10 17:07
上面是红颜妹子写的这个是我的思路:
  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         static int person[15]; // 标记15个人
  5.         int n = 15; // 存剩余人数
  6.     int i = 1; // 标记报数的人
  7.         int j = 0; // 用于计算数组下标

  8.         while (n>1)
  9.         {
  10.                 if (person[j%15]==0 && i!=3)
  11.                 {
  12.                         i++;
  13.                 }
  14.                 else if (person[j%15]==0 && i==3)
  15.                 {
  16.                         i = 1; // 当报数为3时,初始化为1开始下次循环报数
  17.                         person[j%15] = 1; // 把报数为3的人都标记为1
  18.                         n--; // 剩余人数减一
  19.                 }
  20.                 j++;
  21.         }
  22. for (i=0; i<15; i++)
  23. {
  24.          if (person[i]==0)
  25.          {
  26.                  printf ("这个叛徒是%d\n",i+1);
  27.          }
  28. }

  29.         return 0;
  30. }
复制代码

作者: xiezhongmin    时间: 2015-3-10 17:08
红颜妹子写的最精简所以拿来参考下
作者: 夏皮冬絺    时间: 2015-3-10 17:21
自己想出来才是王道,靠别人就算拿到分了学的也累,真心的
作者: xiezhongmin    时间: 2015-3-10 17:32
夏皮冬絺 发表于 2015-3-10 17:21
自己想出来才是王道,靠别人就算拿到分了学的也累,真心的

x下面就是我自己写的,你们没看到吗
作者: futaoheima    时间: 2015-3-11 13:09
现在完全写不出来,也看不懂,怎么办?
作者: zuoxiaorui    时间: 2015-3-11 15:34
抽到的题目一样。
作者: Lbabywei1988    时间: 2015-3-12 17:44
喧闹的世界 发表于 2015-3-10 16:23
用什么语言写的?如果用面向对象的思维就很好做。c语言就要想下算法了

得用C来写
作者: Lbabywei1988    时间: 2015-3-12 17:45
xiezhongmin 发表于 2015-3-10 17:03
不好意思我粘贴错了那是第9题的,下面是这题的代码:

为什么 都这么牛?!!
作者: Lbabywei1988    时间: 2015-3-12 17:47
xiezhongmin 发表于 2015-3-10 17:07
上面是红颜妹子写的这个是我的思路:

灰常感谢
作者: Lbabywei1988    时间: 2015-3-12 17:49
夏皮冬絺 发表于 2015-3-10 17:21
自己想出来才是王道,靠别人就算拿到分了学的也累,真心的

哥们儿 ,这道理我懂,就是我想了很久都没想出了,不得已才问问各位大神的
作者: Lbabywei1988    时间: 2015-3-12 17:52
futaoheima 发表于 2015-3-11 13:09
现在完全写不出来,也看不懂,怎么办?

努力吧。我跟你是一个级别的,跟他们这些大神没法比
作者: Lbabywei1988    时间: 2015-3-12 20:33
zuoxiaorui 发表于 2015-3-11 15:34
抽到的题目一样。

你会的吧!!看来都是大神级别的啊!
作者: xiaoxiong    时间: 2015-3-12 20:35
好厉害啊!!!!!
作者: xiaoxiong    时间: 2015-3-12 20:42
我还没写呢!!
作者: 夏皮冬絺    时间: 2015-3-12 21:03
Lbabywei1988 发表于 2015-3-12 17:49
哥们儿 ,这道理我懂,就是我想了很久都没想出了,不得已才问问各位大神的 ...

恩恩加油吧~
作者: 黑色淘金    时间: 2015-3-12 22:54
你刚做基础测试题,就已经有这么多技术分了啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2