zoukankan      html  css  js  c++  java
  • Brainf**k(一位数求max)

    题目大意:给你两个一位数,要你求出其中的较大值(使用$Brainf**k$)

    ($Brainf**k$简介,相当于有一个数组和一个指针,","为把数组当前位赋值为读入的数,"."为输出当前位置的值,"<"为指针左移一位(最左端为$0$),">"为指针右移一位,"+"数组当前位置的值加一,"-"数组当前位置的值减一,"[]"循环,每次运行到"["或"]"时判断一下当前位置是否为$0$,是,退出循环,否,继续循环)

    题解:我还是太菜,想了$20$分钟。我构造了一个序列(标号从$0$开始),如下(上面的数字表示这一位的值,$a$为输入的第一个数,$b$为输入的第二个数;下面的数字表示这个位置的标号)

    读入时的数列(>+>,>,,):

    $$0qquad 1qquad 0qquad bqquad 0qquad 0qquad 0\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    然后把$b$在第$6$位建一个备份(先把$b$复制到位置$5,6$,再把位置$5$复制到位置$3$)([->>+>+<<<]>>[-<<+>>]<<<):

    $$0qquad 1qquad aqquad bqquad 0qquad 0qquad b\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    这时,我们把$a,b$循环$-1$,但是每次往回移动指针时,若该位置有值,就一直左移,然后向右移动两位([->-[<]>>]):

    分类讨论(记$M$为$max(a,b)$,$A$为$M-a$,$B$为$M-b$):

    1.正常情况(即$a,b$都不为零),那么指针会先移动到位置$0$,再移动到位置$2$(即$a$的位置),然后继续:

    $$0qquad 1qquad aqquad bqquad 0qquad 0qquad b\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    2.若$a$为零,即$a<b$,那么指针会先移动到位置$2$(即原来$a$的位置),再移动到位置$4$,循环就会结束:

    $$0qquad 1qquad 0qquad Bqquad 0qquad 0qquad b\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    3.若$b$为零,即$ageq b$,那么指针就先会停在位置$3$(即原来$b$的位置),再移动到位置$5$,循环结束:

    $$0qquad 1qquad Aqquad 0qquad 0qquad 0qquad b\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    现在,原来$a,b$的位置存的值为$A$和$B$,

    所以这时的指针就会停在位置$4,5$,这时把指针向左移动$4$格,也就是说指针会停在位置$0,1$(<<<<),

    然后若这个位置有值(也就是在位置$1$),就继续向左移动([<]),

    所以现在指针停在位置$0$,再向右移动$3$格,就停在了位置$3$,即$max(a,b)-b$(>>>)。

    最后把位置$3$的值(值为$max(a,b)-b$)加到位置$6$(值为$b$)就行了。
    $$0qquad 1qquad 0qquad 0qquad 0qquad 0qquad M\
    0qquad 1qquad 2qquad 3qquad 4qquad 5qquad 6$$

    卡点:我竟然一次过???

    Brainf**k Code:

    >+>,>,,[->>+>+<<<]>>[-<<+>>]<<<[->-[<]>>]<<<<[<]>>[->>>>+<<<<]>>>>.
    

      

  • 相关阅读:
    一般 武胜
    Export/Import CSV files with MySQL 武胜
    关于Python中的for循环控制语句
    Linux下libxml2的使用
    Foxit PDF Reader能有效升级日文包
    Dependency introduction
    eclipse 插件更新站点
    TypeError: 'module' object is not callable 原因分析
    ubuntu11.10 安装reportlab出现“Python.h: 没有那个文件或目录”
    Windows 7 下如何调整网卡的优先级
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/9476810.html
Copyright © 2011-2022 走看看