zoukankan      html  css  js  c++  java
  • 算法两则

    一、鸡兔同笼

    已知共有鸡和兔共15只,共有40只脚,问:鸡和兔各有几只?

      一般人看见这样的问题都是立刻想到二元一次方程式,一下就解决了,其实还有更简单的,不用写算式,心算可以出结果。

      新算法:

        假设鸡和兔都训练有素,吹一声哨,抬起两只脚,40-15*2 = 10,此时鸡都屁股坐地了,剩下都是兔子两脚战地,故:

        兔子数量:10 / 2 = 5(只)      鸡的数量:15 - 5 = 10(只)

    二、字符(字符串)转二进制数组

      刚刚开始学习C语言时候,会练习打印一个字符的二进制形式,又因为平时学习二进制转换时,都是循环除的方式得出二进制形式,故经常写的 C 语言代码:

      

        int num = 10;
        int i = 0;
        int temp = 0;
        int arr[8] = {0};
        while (num)
        {
            arr[i] = num % 2;
            num /= 2;
            i++;
        }
        for (i = 0; i < 4; i++)
        {
            temp = arr[i];
            arr[i] = arr[7-i];
            arr[7-i] = temp;
        }

      这样写出来看起来比较臃肿,其实可以进行优化。当学习了C 语言的位操作之后,就可以优化的很简单了:

    int num = 10;
    for (int j = 0; j < 8; j++)
     {
        temp = num << j;       //j:取出字符第 j 位数值 循环左移j位
        temp = temp & 0x80;    //按位与,取出最高位  此处防止32位寄存器处理时,num高位值在更高的位置保留,没有达到置零效果,进而影响后一步取值出错
        arr[j] = temp >> 7;    //右移7位,取出需要的值
    }
    ded3
  • 相关阅读:
    多表关联 update
    pdf转成图片
    JS中也可以使用JSTL和EL标签
    JSTL String时间转成 date
    SQL函数创建错误
    使用 itext、flying-saucer 实现html转PDF(转)
    Redis 命令参考
    1、课程介绍
    layui 弹出框提交表单
    一张图解析
  • 原文地址:https://www.cnblogs.com/dedeblog/p/6061058.html
Copyright © 2011-2022 走看看