試卷征集
          加入會員
          操作視頻

          “搶單”是外賣騎手的日常,當外賣平臺上一個新的訂單出現時,騎手需要在短時間內考慮是否搶單。平臺根據騎手的實際信息,給出是否搶單的建議,若建議搶單則給出到達各個取送點的順序。平臺判斷是否搶單的算法設計如下:
          1)在不改變已有訂單各取送點順序的前提下,將新訂單按先取餐后送餐的順序分別插入原來的路線中,枚舉所有新路線。
          2)計算新路線路程,并進行判斷:每個取送點都有一個系統指定時間,若騎手到達該位置時,時間晚于系統指定時間,則該方案無效。
          3)對新路線進行計算和判斷后,刪除此次枚舉的兩個插入位置,還原為初始狀態,再繼續進行下一次枚舉。
          4)在所有有效方案中,輸出總路程最小的方案,若無有效方案,則輸出不接單的建議。如果騎手目前無訂單在派送中,則插入訂單A的方案只有1種,騎手→取餐點A→送餐點A;如果騎手訂單中已有1個送餐點A和1個送餐點B,則新訂單C有6種插入方案:
          方案Ⅰ:騎手→取餐點C→送餐點C→送餐點A→送餐點B
          方案Ⅱ;騎手→取餐點C→送餐點A→送餐點C→送餐點B
          方案Ⅲ:騎手→取餐點C→送餐點A→送餐點B→送餐點C
          方案Ⅳ:騎手→送餐點A→取餐點C→送餐點C→送餐點B
          方案Ⅴ:騎手→送餐點A→取餐點C→送餐點B→送餐點C
          方案Ⅵ:騎手→送餐點A→送餐點B→取餐點C→送餐點C
          請回答下列問題:
          (1)若騎手僅剩1份餐未送(已取餐),路線為:騎手→送餐點A,新的訂單出現后,有
          3
          3
          (填數字)種插入方案。
          (2)定義如下con(tim)函數進行時間格式轉換,將24小時制的“時:分”轉換為分,如02:30轉換為150,請在劃線處填上合適代碼。

          (3)定義totd(riderlist,h)函數,其功能為從頭指針h進入鏈表riderlist,按節點先后順序計算總路程,并判斷能否在系統指定時間內到達各取送點,若到達某一取送點時超時返回-1。若鏈表riderlist如下,
          riderlist=[[“u1001”,“119.906033”,“31.014597”,“11:30”,2],
          [“s”,“119.921439”,“31.023022”,“11:55”,3],
          [“t”,“119.887850”,“31.022861”,“11:40”,1],
          [“s”,“119.953836”,“31.021122”,“12:10”,-1]]。
          第1個元素中“u1001”為騎手編號,“119.906033”和“31.014597”,表示騎手實時位置,“11:30”為實時時間,2為下一節點指針,第2個元素開始,第1項若為“t”表示此元素為取餐點信息,若為“s”表示此元素為送餐點信息.調用函數totd(riderlist,h),risderlist的值如上,h為0,則加框處語句將被執行
          4
          4
          次,若將此條件語句改為riderlist[pre][4]!=-1,
          不影響
          不影響
          (選填:影響/不影響)程序執行。

          (4)實現是否接單判斷的Python部分程序如下,請在劃線處填入合適的代碼。

          【答案】3;4;不影響
          【解答】
          【點評】
          聲明:本試題解析著作權屬菁優網所有,未經書面同意,不得復制發布。
          發布:2024/7/17 8:0:9組卷:1引用:1難度:0.5
          相似題
          • 1.現有一個m*n的迷宮矩陣 maze(如圖 a),矩陣中有空格子(用1表示,可通行)和墻(用0表示,不可通行);在迷宮中通行的每一步移動操作,你可以往上,下,左或者右方向移動一個格子(不能進入墻所在的格子)。
            你的目標是找到離entry(入口)最近的出口,并規劃入口到出口的行走路徑。(出口的含義是 maze邊界上的空格子。entry格子不算出口)。如果不存在這樣的路徑,請你返回-1;如果有,則展示entry到出口的行走路徑。
            程序在正常執行后,運行結果如圖b所示:

            ●尋找最近出口位置的思路與算法:
            預設:0墻      1空格子      2已探索
            在廣度優先搜索的過程中,我們在隊列中保存[cx,cy,d]三元素列表,其中(cx,cy)為當前的行列坐標,d為當前坐標相對入口的距離(即需要移動的步數)。
            當我們遍歷至(cx,cy)時,我們枚舉它上下左右的相鄰坐標(nx,ny)。此時可能有三種情況:
            ①(nx,ny)不屬于迷宮坐標或為墻,此時無需進行任何操作;
            ②(nx,ny)為迷宮的出口(在迷宮邊界且不為墻),此時應返回 nx,ny,d+1,即該出口的坐標以及相對入口的距離作為答案。
            ③(nx,ny)為空格子且不為出口,此時應將新坐標設置為已探索,并將其對應的三元素列表[nx,ny,d+1]加入隊列。
            最終,如果不存在到達出口的路徑,我們返回-1作為答案。
            1、若迷宮數據為maze=[[0,0,0,0,0],[1,1,1,1,0],[0,1,0,1,1],[0,1,1,1,0],[0,0,0,0,0]],則最少移動步數為
             

            2、請將以下的程序代碼,補充完整。

            發布:2025/1/2 10:30:2組卷:1引用:1難度:0.4
          • 2.又到植樹的季節,大人和小孩共100個,需要種100棵樹,每個大人每天能種3棵樹,三個小孩每天能合種1棵樹,大人小孩至少都有1位參加,問大人和小孩各有幾個,正好一天完成這個任務?
            (1)大人和小孩個數最合理的范圍是
             

            A.大人:5到33,小孩:1到99
            B.大人:1到33,小孩:1到291
            C.大人:1到33,小孩:3到99
            D.大人:1到33,小孩:3到291
            (2)設大人為a,小孩為b,匹配這個需求的條件是
             

            A.a*3+b/3=100 and a+b=100
            B.a*3+b/3=100 or  a+b=100
            C.a/3+b*3=100 and a+b=100
            D.a/+b*3=100 or  a+b=100
            (3)算法的初始化部分已在提供的程序中完成。請在指定區域內編寫程序,完成題目要求的功能。完成VB程序的編寫,輸出符合條件的人數組合。(注意:程序編寫正確才能得分)
            Dim a As Integer,b As Integer

            發布:2025/1/2 11:30:1組卷:1引用:1難度:0.3
          • 3.查找與替換。從鍵盤上分別輸入要查找和替換的字符串,對文本文件進行查找與替換,替換后保存到新的文本文件中。完成查找與替換功能的思路是:首先可從待檢索文本文件“in.jye.ai”逐行讀取文本內容到列表text,然后從鍵盤上輸入查找的字符串key和替換的字符串new,對列表text中的元素逐個進行查找并替換,結果保存到列表result,最后將result 寫入文件“out.jye.ai”。
            (1)主程序。
            text=readfile(“in.jye.ai“)#讀入文件
            key=input(“請輸入要查找的字符串:“)
            new=input(“請輸入要替換的字符串:“)
            result=[]
            for line in text:
            newline=replace(key,new,line)#替換
            result.append(newline)#添加到列表
            writefile(“out.jye.ai“,result)#寫入文件
            該程序段采用的算法是
             
            (單選,填字母:A.解析算法/B.枚舉算法)。
            (2)讀寫文本文件,如下的readfile函數,逐行讀取文本文件數據存入列表并返回。請在橫線處填入合適的代碼。
            def readfile(filename):
            f=open(filename,encoding=“utf-8“)#打開文件
            text=[]
            line=f.readline(  )#從文件中讀取一行
            while line:
            text.jye.ai(line)#添加到列表
            line=f.readline(  )
            f.jye.ai(  )
            return    
            def writefile(filename,text):
            #將text寫入filename文件,代碼略
            (3)查找字符串,如下的findstr函數,在字符串line中從begin位置開始查找key在字符串line中的位置,請在橫線處填入合適的代碼。
            def findstr(key,line,begin):
            for i in range(begin,len(line)-len(key)+1):
            if         
            return i
            return-1
            (4)替換字符串。如下的replace函數,在字符串line中檢索所有的字符串key并替換為new,請在橫線處填入合適的代碼。
            def replace(key,new,line):
            begin=0
            while begin<len(line)-len(key)+1:
            pos=findstr(key,line,begin)
            if pos==-1:
                      
            else:
            line=line[0:pos]+new+line[pos+len(key):len(line)]
            begin=pos+len(key)
            return line

            發布:2025/1/2 10:30:2組卷:0引用:2難度:0.3
          APP開發者:深圳市菁優智慧教育股份有限公司| 應用名稱:菁優網 | 應用版本:5.0.7 |隱私協議|第三方SDK|用戶服務條款
          本網部分資源來源于會員上傳,除本網組織的資源外,版權歸原作者所有,如有侵犯版權,請立刻和本網聯系并提供證據,本網將在三個工作日內改正