zoukankan      html  css  js  c++  java
  • Python习题(第3课)

    一、独一无二的路

      从前有一只小小的机器人叫小器,小器站在一个M*N的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你M和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?

      

      代码如下:(递归,个人喜欢,但可能会超出时间)

     1 def way(m,n,i,j):
     2   if i==m or j==n:
     3     return 0
     4   elif i==m-1 and j==n-1:
     5     return 1
     6   elif i==m-1 and j!=n-1:
     7     return way(m,n,i,j+1)
     8   elif i!=m-1 and j==n-1:
     9     return way(m,n,i+1,j)
    10   else:
    11     return way(m,n,i+1,j)+way(m,n,i,j+1)
    12 
    13 m=int(input())
    14 n=int(input())
    15 print(way(m,n,0,0))

    二、括号配对检测 A

      用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:

      配对成功,配对不成功

      其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。

      

      代码如下:

    def parentheses(temp):
      list1=[]
      for i in range(len(temp)):    #除去其他,剩下(),放在list1
        if temp[i]=='(' or temp[i]==')':
          list1.append(temp[i])
      list2=[]    #存放(,相当于栈
      if len(list1)==0:    #排除明显正确
        return True
      elif list1[0]==')':    #排除明显错误
        return False
      elif len(list1)%2!=0:
        return False
      else:
        for i in range(len(list1)):
          if list1[i]=='(':
            list2.append(list1[i])
          elif list1[i]==')' and len(list2)!=0:
            list2.pop()
          else:
            return False
      return True
    
    temp=input()
    if parentheses(temp):
      print('配对成功')
    else:
      print('配对不成功')

    三、垂直Hello World

      垂直输出"Hello World",全部代码不超过2行。

      代码如下:

    print(*'Hello World',sep='
    ')

    四、斐波那契数列计算

      斐波那契数列如下:F(0) = 0, F(1) = 1

               F(n) = F(n-1) + F(n-2)

      编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素。

      调用上述函数,完成如下功能:

      用户输入一个整数n,输出所有不超过n的斐波那契数列元素、输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割。

      

      代码如下:

    def Fibon(num):
      if num==0:
        return 0
      elif num==1:
        return 1
      elif num>1:
        return Fibon(num-1)+Fibon(num-2)
    
    num=int(input())
    list1=[]
    for i in range(num+1):
      list1.append(Fibon(i))
      print(list1[-1],end=', ')
    print(sum(list1),sum(list1)//len(list1),sep=', ')

    五、3位水仙花数计算

      “3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。

      请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。

      注意:这是一个OJ题目,输出格式要严格一致,最后一位水仙花数后没有逗号。

      

      代码如下:

    def Narcissus():
      list1=[]
      for num in range(100,1000):
        a=num//100
        b=num//10%10
        c=num%10
        if num==a**3+b**3+c**3:
          list1.append(num)
      return list1
    
    str1=', '.join(map(str,Narcissus()))
    print(str1)
    一个佛系的博客更新者,随手写写,看心情吧 (っ•̀ω•́)っ✎⁾⁾
  • 相关阅读:
    UML系列图--用例图
    扩展方法
    POJ3254 Corn Fields(状压DP)
    POJ2836 Rectangular Covering(状压DP)
    POJ2817 WordStack(状压DP)
    POJ2441 Arrange the Bulls(状压DP)
    HDU2167 Pebbles(状压DP)
    HDU1561 The more, The Better(树形DP)
    POJ3659 Cell Phone Network(树上最小支配集:树型DP)
    UVa10917 A Walk Through the Forest(SPFA+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/WoLykos/p/8709937.html
Copyright © 2011-2022 走看看