亞馬遜經(jīng)典面試題實例詳解
更新時間:2017年10月11日 14:19:43 作者:JeemyJohn
這篇文章主要介紹了亞馬遜經(jīng)典面試題實例詳解的相關資料,希望通過本文能幫助到大家,讓大家學習理解這部分內容,需要的朋友可以參考下
亞馬遜面試題:
如下所示的Map中,0代表海水,1代表島嶼,其中每一個島嶼與其八領域的區(qū)間的小島能相連組成島嶼群。寫代碼,統(tǒng)計Map中島嶼個數(shù)。
/* Q1. Map [ 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 ] */
實現(xiàn)代碼:
#include<iostream>
#include<queue>
using namespace std;
typedef struct {
int i;
int j;
}position;
void search(int a[][], int n, int i, int j, int cnt) {
queue<position> qu = new queue<position>();
position p;
p.i = i;
p.j = j;
qu.push(p);
a[i][j] = cnt;
while (!qu.empty()) {
p = qu.pop();
for (int ii = p.i - 1; ii <= p.i + 1; ii++) {
for (int jj = p.j - 1; jj <= p.j + 1; jj++) {
if (ii >= 0 && ii < n && jj >= 0 && jj < n && a[ii][jj] == 1 && (ii != i || jj != j)) {
a[ii][jj] = cnt;
p.i = ii;
p.j = jj;
qu.push(p);
}
}
}
}
}
int count(int a[][], int n) {
int cnt = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] == 1) {
cnt++; // 發(fā)現(xiàn)一個新陸地
search(a, n, i, j, cnt);
}
}
}
return cnt;
}
int main() {
int n;
cin >> n;
int a[][] = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
int cnt = count(a, n);
cout << cnt - 1 << endl;
return 0;
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
c++與python實現(xiàn)二分查找的原理及實現(xiàn)
本文介紹了c++與python實現(xiàn)二分查找的原理及實現(xiàn),二分查找指首先將數(shù)組中間值和目標值進行比較,如果相等則返回;如果不相等,則選擇中間值左邊的一半或者右邊的一半進行比較;不斷重復直到檢索完畢,下文相關資料需要的朋友可以參考一下2022-03-03
C++實現(xiàn)神經(jīng)網(wǎng)絡框架SimpleNN的詳細過程
本來自己想到用C++實現(xiàn)神經(jīng)網(wǎng)絡主要是想強化一下編碼能力并入門深度學習,對C++實現(xiàn)神經(jīng)網(wǎng)絡框架SimpleNN的詳細過程感興趣的朋友一起看看吧2021-08-08
一篇文章徹底弄懂C++虛函數(shù)的實現(xiàn)機制
C++中的虛函數(shù)的作用主要是實現(xiàn)了多態(tài)的機制,基類定義虛函數(shù),子類可以重寫該函數(shù),在派生類中對基類定義的虛函數(shù)進行重寫時,需要在派生類中聲明該方法為虛方法,這篇文章主要給大家介紹了關于如何通過一篇文章徹底弄懂C++虛函數(shù)的實現(xiàn)機制,需要的朋友可以參考下2021-06-06

