cchoop的博客

永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能。 — 拿破仑...

算法逻辑题(2018/6/14)

逻辑题一:


问题描述:

在一条街上,有5座房子,喷了5种颜色。
2、每个房里住着不同国籍的人
3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
问题是:谁养鱼?
提示:
1、英国人住红色房子
2、瑞典人养狗
3、丹麦人喝茶
4、绿色房子在白色房子左面
5、绿色房子主人喝咖啡
6、抽Pall Mall 香烟的人养鸟
7、黄色房子主人抽Dunhill 香烟
8、住在中间房子的人喝牛奶
9、 挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住抽Dunhill 香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居

答案:德国人


逻辑题二:


问题描述:

对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关.2的倍数反方向又拨一次开关.3的倍数反方向又拨一次开关..仍此类推.问:最后为关熄状态的灯的编号.

代码实现:

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义100个布尔型变量,true代表灯亮,false代表灯灭
            bool[] light = new bool[100];

            //初始化所有灯亮的状态
            for (int i = 0; i < 100; i++)
            {
                light[i] = true;
            }

            //进行操作:凡是1的倍数反方向拨一次开关.
            //2的倍数反方向又拨一次开关.
            //3的倍数反方向又拨一次开关..
            for (int i = 0; i < 100; i++)
            {
                int lightId = i;
                //灯的编号从1开始,所以判断是i需加1
                for (int j = 1; j <= i + 1; j++)
                {
                    if ((i + 1) % j == 0)
                    {
                        light[lightId] = !light[lightId];
                    }
                }
            }
            //打印出灯亮的编号
            Console.Write("亮灯的编号为:");
            for (int i = 0; i < 100; i++)
            {
                if (light[i] == false)
                {
                    Console.Write((i + 1) + "   ");
                }
            }
            Console.ReadKey();
        }
    }
}

运行结果:
运行结果


逻辑题三:


一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。问:商人共可卖出多少胡萝卜

代码实现:

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //要使萝卜消耗的数量最少,必须让萝卜消耗量的距离最短

            //当萝卜总数大于2000时小于等于3000,萝卜运输的消耗量 = 运输距离 * 5。
            //当萝卜总数大于1000时小于等于2000,萝卜运输的消耗量 = 运输距离 * 3。
            //第一段距离:1000/5 = 200;
            //第二段距离:1000/3 = 334
            //第三段距离为:1000-200-334 = 466
            int num1 = (1000 / 5) * 5;
            int num2 = (1000 / 3 + 1) * 3;
            int num3 = 1000 - 1000 / 5 - (1000 / 3 + 1);

            Console.WriteLine("商人最后可卖的萝卜数量为:" + (3000 - num1 - num2 - num3));

            Console.ReadKey();
        }
    }
}

运行结果:
运行结果

阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_34937637/article/details/80697206
个人分类: 深圳实训
想对作者说点什么? 我来说一句

java逻辑题经典算法42

2013年07月01日 340KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭