Amazon面试题

原创 2017年07月19日 11:50:26

亚马逊面试题:

如下所示的Map中,0代表海水,1代表岛屿,其中每一个岛屿与其八领域的区间的小岛能相连组成岛屿群。写代码,统计Map中岛屿个数。

/*
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
]
*/

先直接上代码,后续等我有时间再写解题报告。若有问题,加我公众号留言

#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++; // 发现一个新陆地
                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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

一道有意思的Amazon的概率面试题[# 71]

该问题包含两个子问题: 子问题1:给你一个骰子,你扔到几,机器将会给你相应的金钱。比如,你扔到6,机器会返回你6块钱,你扔到1,机器会返回你1块钱。请问,你愿意最多花多少钱玩一次? 子问题2:...

[面试题]Amazon: Given two binary trees,if the first tree is subtree of the second one

Given two binary trees, check if the first tree is subtree of the second one. A subtree of a tree ...
  • jhbxlx
  • jhbxlx
  • 2014年02月11日 11:19
  • 721

Amazon的概率面试题

该问题包含两个子问题: 子问题1:给你一个骰子,你扔到几,机器将会给你相应的金钱。比如,你扔到6,机器会返回你6块钱,你扔到1,机器会返回你1块钱。请问,你愿意最多花多少钱玩一次? 子问题2:在...

分别计算二叉树奇数层和偶数层的和-- 一道amazon面试题

You are given a function calcDifference which takes in the root pointer of a binary tree as it's inp...
  • zzran
  • zzran
  • 2013年01月15日 18:05
  • 1453

一道有意思的Amazon的概率面试题

问题: 该问题包含两个子问题: 子问题1:给你一个骰子,你扔到几,机器将会给你相应的金钱。比如,你扔到6,机器会返回你6块钱,你扔到1,机器会返回你1块钱。请问,你愿意最多花多少钱玩一次?...

Amazon(亚马逊)2014届秋季校园招聘在线笔试题一

思路:题目要求在顾客花掉手中所有n元钱的情况下能够买到最少的商品数,这句话包含2层意思,一是顾客必须正好花掉手中的n元钱,二是在正好花掉手中n元钱的情况下,顾客可能有多种消费方案,要求从这些方案中找出...

名企笔试:Amazon笔试题(Count the elements)

题意: Given two unsorted arrays A, B. They can contain duplicates. For each element in A , count elem...

15道Google智力面试题(含答案)

01 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一...
  • kMD8d5R
  • kMD8d5R
  • 2017年12月11日 00:00
  • 197

Java String 面试题以及答案

String是最常使用的Java类之一,整理的了一些重要的String知识分享给大家。 作为一个Java新手程序员,对String进行更深入的了解很有必要。如果你是有几年Java开发经验,可以根...
  • yissan
  • yissan
  • 2017年12月08日 15:25
  • 14
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Amazon面试题
举报原因:
原因补充:

(最多只允许输入30个字)