2017網易遊戲筆試
阿新 • • 發佈:2018-12-23
剛剛做完網易筆試題,就寫出了兩題,趁腦子還清醒,寫下來記住。
第一題程式碼:
第二題:#include<iostream> using namespace std; int main() { int M, N, x, y, i, j; cin >> M >> N; int *a = new int[M]; for (i = 0; i < M; i++) a[i] = 0;//初始化硬幣起始狀態 while (N != 0) { --N; cin >> x >> y; for (j = x - 1; j < y; j++) a[j]++; } for (int num = 0; num < M; num++) { a[num] %= 2; cout << a[num]; } return 0; }
不懂是什麼意思,把網上公式隨便抄了一遍。。
第三題程式碼:
#include <iostream> #include <queue> using namespace std; const int maxSize = 101; int visit[maxSize] = { 0 }; int main() { void DFS(int a[maxSize][maxSize], int n, int v); int graph[maxSize][maxSize] = { 0 }; int n, m; cin >> n >> m; if (n <= 1) { cout << 0; return 0; } if (m == 0) { cout << n - 1; return 0; } int a, b; while (m) { m--; cin >> a >> b; graph[a][b] = 1; graph[b][a] = 1; } int nums = 0; //聯通子圖個數 for (int i = 1; i <= n; i++) { if (visit[i] == 0) { DFS(graph, n, i); nums++; } } nums--; cout << nums << endl; return 0; } void DFS(int a[maxSize][maxSize], int n, int v) { int First(int a[maxSize][maxSize], int n, int v); int Next(int a[maxSize][maxSize], int n, int v, int j); int w; visit[v] = 1; for (w = First(a, n, v); w > 0; w = Next(a, n, v, w)) { if (!visit[w]) DFS(a, n, w); } } int First(int a[maxSize][maxSize], int n, int v) { int j = 1; while (j <= n && a[v][j] == 0) j++; if (j > n) return 0; return j; } int Next(int a[maxSize][maxSize], int n, int v, int j) { int w = j + 1; while (w <= n && a[v][w] == 0) w++; if (w > n) return 0; return w; }
第四題:
想當然地以為是判斷輸入的字串有幾個不同的字元就行了,但這種思路貌似不對,通過率僅為2%。
祝自己好運。