日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题)

發布時間:2024/7/5 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

試題為今天考試時記下,記于此僅做學習分享。侵刪。

答案思路僅供參考,肯定有更優的辦法!第三題沒解出來,歡迎大家評論提點!

第一題:

這道題對輸入做切分(調用split()方法)后,進行反復的10-2進制轉換即可。

注意點:按位與用單個“&”符號。

  • #!/usr/ip2in/env python3
  • # -*- maskipoding: utf-8 -*-
  • """
  • created on Wed Mip1r 13 19:43:05 2019
  • huawei1 - 100%
  • @author: youxinlin
  • """
  • ip1,ip2,maskip = input().split()
  • ip1 = ip1.split('.')
  • ip2 = ip2.split('.')
  • maskip = maskip.split('.')
  • new_ip1 = []
  • new_ip2 = []
  • for i in range(len(ip1)):
  • new_ip1.append(str(int(ip1[i])&int(maskip[i])))
  • new_ip2.append(str(int(ip2[i])&int(maskip[i])))
  • res = 1
  • for i in range(len(ip1)):
  • if new_ip1[i]!=new_ip2[i]:
  • res = 0
  • break
  • print(res,'.'.join(new_ip1))
  • 第二題:

    這道題可以參考LeetCode85:https://blog.csdn.net/u014626513/article/details/81381948

    這種思路是比較清晰的:遍歷每一行的每個元素,進行向下(列方向)和向右(行方向)的搜索并計數,從而得到以每個元素為左上角頂點的最大正方形。此處還可以優化一下減少運算量,即遍歷元素時,若該元素右邊或下邊的元素個數已經少于目前得到的最大正方形的邊長,那么就直接停止遍歷搜索。

    高級一點的思路:采用動態規劃,用計數矩陣記錄個數,運算量更少。

  • #!/usr/bin/env python3
  • # -*- coding: utf-8 -*-
  • """
  • Created on Wed Mar 13 20:06:52 2019
  • huawei2 -100%
  • @author: youxinlin
  • """
  • def calMAX1(matrix):
  • res = 0
  • hang = len(matrix)
  • lie = len(matrix[0])
  • countMatrix = [[0 for i in range(lie)] for i in range(hang)] #生成0矩陣
  • for i in range(hang):
  • for j in range(lie):
  • #遍歷
  • if i==0 or j==0:
  • countMatrix[i][j] = int(matrix[i][j])
  • else:
  • if matrix[i][j]!='0':
  • countMatrix[i][j] = min( countMatrix[i-1][j] , countMatrix[i][j-1], countMatrix[i-1][j-1]) +1 #查詢周邊元素并累加
  • else:
  • countMatrix[i][j]=0
  • res = max(res,countMatrix[i][j])
  • return res**2
  • matrix = []
  • n = int(input()) #有幾行
  • for i in range(n):#輸入每一行,str形式
  • matrix.append (list( input()))
  • if len(matrix[0])==0:
  • print(0)
  • else:
  • print(calMAX1(matrix))
  • 第三題:

    ?

    沒有通過。(case通過率30%)

    主要難點在于打掉的怪獸會變成陸地(1),那么就要更新矩陣,重新搜索當前點到下一個最近等級的怪獸的路徑,如果遍歷可能運算量會爆炸,采用深度優先算法,優先查詢未走過的路,可能運算速度會快一些。

    總結

    以上是生活随笔為你收集整理的华为2019年校招(20届实习)机考题python版解答与思路(2019-3-13软件题)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。