算法逻辑题(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();
        }
    }
}

运行结果:
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cchoop

有用的话请杯肥宅水

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值