1.
小k是x區域的銷售經理,他平常常駐「5」城市,並且經常要到「1」、「2」、「3」、「4」、「6」城市出差。當機場出現大霧情況時,會導致對應城市的所有航班的起飛及降落均停止(即不能從該城市出發,其他城市也不能到達該城市)。小k希望知道如果他需要到x城市出差時,如果遇到y城市出現大霧,他最短的飛行時間及飛行路徑。
注意:當兩個城市間不可達時,消耗時間預設取1000.
各城市簡的飛行時間如下表所示,加粗行代表始發城市,加粗列代表終點城市,矩陣中的值代表從始發城市飛到終點城市所耗時間(單位:小時),m代表不可達(注意飛行執行緒是單向的,即a->b不等於b->a),例如
(1)從1號城市飛行到4號城市花費5h,從4號城市飛到1號城市花費2h
(2)從5號城市飛行到3號城市不可達,從3號城市飛到5號城市花費7h
1 2 3 4 5 6
1 0h 2h 10h 5h 3h m
2 m 0h 12h m m 10h
3 m m 0h m 7h m
4 2h m m 0h 2h m
5 4h m m 1h 0h m
6 3h m 1h m 2h 0h
輸入描述:
輸入出差城市x(x可為1、2、3、4、6)
輸入大霧城市(y可為0、1、2、3、4、5、6,可為0時代表沒有城市出現大霧)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
double pi = acos(-1.0);
const
double eps = 1e-6;
int inf = 1000;
vector
>dist(6, vector
(6));
vector
>path(6, vector
(6));
deque
result;
void setfog(vector
>&matrix, int city)
}void floyd(vector
>&matrix)
for (int k = 0; k < size; k++) }}
}}void findpath(int i, int j)
result.push_front(ci);
result.push_back(ccj);
}int main()
, , ,
, ,};
int end, foggy;
cin >> end >> foggy;
--end;
--foggy;
if (foggy!=-1)
setfog(matrix, foggy);
floyd(matrix);
findpath(4, end);
cout
<< dist[4][end] << endl;
for (int i = 0; i < result.size(); i++)
++result[i];
if (dist[4][end] == inf)
result.clear();
if (result.empty())
cout
<< ""
<< endl;
else
return
0;}
2.
題目描述:輸入5個任務的id,任務優先順序,開始執行時間和任務執行時間,其中排程過程支援搶占,即優先順序值高的任務可搶占正在執行的優先順序值低的任務,最後輸出前200秒,任務的排程過程
輸入描述:任務資訊輸入格式為:[任務id.任務優秀級.任務開始執行時間.任務執行時長];任務與任務之間使用「|」隔離;5個任務的任務id為1-5;任務優先順序範圍為0-200.
輸入例子:[1.80.1.10]|[2.20.11.15]|[3.50.21.10]|[4.120.31.10]|[5.100.41.10]
輸出描述:任務id.任務執行時長;任務之間使用」|」分割;如無任務執行,則任務id為0;
輸出例子:0.1|1.10|2.10|3.10|4.10|5.10|2.5|0.144
大致思想就是先把任務按照時間排序.然後先放最前面的任務,看下乙個任務開始的時間是否有任務在執行,之後比較優先順序,如果優先順序高就先執行下乙個任務,第乙個任務順延.依次類推
也可以按照任務的優先順序程度進行排序,然後最高的先執行,之後執行次高的如果時間不為0,則被之前的分段.
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
; scanf("[%d.%d.%d.%d]|[%d.%d.%d.%d]|[%d.%d.%d.%d]|[%d.%d.%d.%d]|[%d.%d.%d.%d]",
&task[0][0], &task[0][1], &task[0][2], &task[0][3],
&task[1][0], &task[1][1], &task[1][2], &task[1][3],
&task[2][0], &task[2][1], &task[2][2], &task[2][3],
&task[3][0], &task[3][1], &task[3][2], &task[3][3],
&task[4][0], &task[4][1], &task[4][2], &task[4][3]);
for (int i = 0; i < 5; i++)
}for (int k = 0; k < 4; ++k)
swap(task[i][k], task[id][k]);
}int
time[200] = ;
for (int i = 0; i < 5; i++)
}else
if (pro == 0)
}now = time[start];
}if (time[start] == 0)
}else
for (int j = 0; j < task[i][3]; j++)}}
}int cnt;
int now;
for (int i = 0; i < 200; i++)
else
else}}
printf("%d", cnt);
}
華為上機測試題目
汽水瓶明明的隨機數 進製轉換 最後乙個單詞的長度 計算字元的個數 老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.輸入描述 輸入包括多組測試資料。每組輸入第一行是兩個正整數n和m 0 n 30000,0 m 5000 分別代表學生的...
華為2015機試測試題
1.計票統計 描述 模擬n個人參加選舉的過程,並輸出選舉結果 假設候選人有四人,分別用 a b c d 表示,選舉時開始計票,若輸入的不是 a b c d 則視為無效票。選 舉結束後獲取各個候選人的得票數以及無效票的個數,輸出結果以新增候選人的順序進行順序輸 出,最後一行為無效的數量。同時getvo...
華為實習程式設計測試題解(2018 03 21)
做了華為的三道程式設計題,以下是題解 1.在字串中找出連續最長的數字串 題目大意 輸入乙個字串,輸出最長的連續數字字串,並輸出其長度,中間用逗號隔開。比如輸入123abc,輸出123,3 另外,要求數字串中每個數字不要求按順序,比如123ab2357中最長數字串應該是2357 而且,如果有多個最長串...