Java教程

line中的一些题

本文主要是介绍line中的一些题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

line中的一些题

往年题:

  1. 逆波兰表达式:https://www.zhihu.com/question/41103160添加链接描述
  2. 8皇后问题:https://zhuanlan.zhihu.com/p/99209213
  3. 简单的替换密码:https://iowiki.com/cryptography_with_python/cryptography_with_python_simple_substitution_cipher.html

实习中遇到的一道题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自己有问题的代码:

import sys

def main(argv):
    # このコードは引数と標準出力を用いたサンプルコードです。
    # このコードは好きなように編集・削除してもらって構いません。
    # ---
    # This is a sample code to use arguments and outputs.
    # Edit and remove this code as you like.
    argv = [int(i) for i in argv]
    start = argv[0]
    end = argv[1]
    m = argv[2]

    nums = argv[3:]
    length = end - start + 1
    result = [0]*len(nums)
    for k in range(len(nums)):
        k1 = start//nums[k]
        k2 = end//nums[k]
        result[k] = k2-k1
    return length-loop(m, result, nums, start, end)
        
def loop(m, result, nums, start, end):
    if m == 1:
        return max(result)
    else:
        m -= 1
        list1 = []
        for i in range(len(result)):
            for j in range(i+1, len(result)):
                a = end//(nums[i]*nums[j])
                b = start//(nums[i]*nums[j])
                list1.append(result[i] + result[j] - a+b)
        return loop(m, list1) 
        
   
      
if __name__ == '__main__':
    print(main(sys.argv[1:]))


思路:

  1. 首先,将列表argv的所有值转换为整数
    -[start,end]是范围[l,r]
    –m是可以选择的数字数量
    –nums是列表n,可以选择的数字,单独拿出来方便使用
  2. 接下来,计算以num为单位的数字范围内的倍数,另存为列表结果
  3. 定义一个递归函数循环,计算所有可能的组合,然后以列表形式传递,当m为1时,递归结束并输出结果。
  4. end-start-loop的结果是末尾剩余的数字。
这篇关于line中的一些题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!