2018阿里笔试题一道

2018阿里笔试题一道八卦阵相传是由诸葛亮创设的一种战斗队形和兵力部署,由八种阵势组成。为了方便,采用矩阵来描述一个八卦阵,它由八个单阵组成,每个单阵由多个兵力区域组成形成一种阵势,如下图所示,其中数字为一个兵力区域的士兵个数。假设单阵与单阵之间兵力区域不会相邻,且单阵中每个兵力区域至少存在一个相邻兵力区域(注:相邻是指在其左上,正上,右上,右方,右下,正下,左下,左方与其相邻),请用最快的速度计算出八个单阵中的兵力(…

大家好,又见面了,我是你们的朋友全栈君。

八卦阵相传是由诸葛亮创设的一种战斗队形和兵力部署,由八种阵势组成。为了方便,采用矩阵来描述一个八卦阵,它由八个单阵组成,每个单阵由多个兵力区域组成形成一种阵势,如下图所示,其中数字为一个兵力区域的士兵个数。假设单阵与单阵之间兵力区域不会相邻,且单阵中每个兵力区域至少存在一个相邻兵力区域(注:相邻是指在其左上,正上,右上,右方,右下,正下,左下,左方与其相邻),请用最快的速度计算出八个单阵中的兵力(士兵个数)的最大值和最小值。

输入:
输入描述,例如:
第一行输入是八阵图的行数。
第二行输入是八阵图的列数。
后续行输入每个区域兵力。每一行的数据中间使用空格分开,当前一行输入完成后回车输入下一行数据。
输出:
输出描述,例如:
输出八个单阵中兵力最大值和最小值。
输入范例:
20
20
34  0   0   0   0   0   0   0   0   0   0   0   0   0   0   10  0   0   0   30
0   23  10  5   5   0   0   0   5   5   5   5   5   0   0   0   30  0   40  0
0   9   0   0   5   0   0   0   4   4   4   4   4   0   0   0   0   30  0   0
0   8   7   7   0   5   0   0   3   3   3   3   0   0   0   0   7   0   9   0
0   9   0   0   5   0   5   0   0   12  12  0   0   0   0   10  0   0   0   9
0   0   0   0   5   0   0   5   0   12  12  0   0   5   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   12  12  0   0   5   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   5   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   5   0   0   0   0   0   0
40  30  3   6   6   0   0   0   0   0   0   0   0   5   5   0   0   0   10  0
0   0   20  0   0   6   6   0   0   0   0   0   0   0   5   6   5   10  10  0
40  30  3   7   6   0   0   0   0   0   0   0   0   0   0   6   0   0   10  0
0   0   0   0   0   0   0   17  0   0   0   0   17  0   0   6   5   7   7   0
0   0   0   0   0   0   0   0   7   0   0   7   0   0   0   0   0   0   0   0
0   20  0   0   7   0   0   0   0   4   4   0   0   0   0   0   10  0   0   0
0   20  0   0   7   0   0   0   0   4   4   0   0   0   0   0   10  0   0   0
0   20  0   0   7   0   0   0   0   4   4   0   0   0   0   0   10  0   0   0
0   30  0   7   0   0   0   0   0   5   5   0   0   0   0   0   0   10  0   50
0   40  7   0   0   0   0   0   0   5   5   0   0   0   0   0   0   0   50  0
43  30  25  10  50  0   0   0   6   6   6   6   0   0   0   0   0   50  0   0
输出范例:
323

116

主要采用回溯算法,但是不知道为什么通过率只有20%,可能阿里的题确实太难了。不过这是第一次做出阿里的笔试题,例题跑通了感觉很开心。代码如下,Python写的:

n = int(raw_input())
m = int(raw_input())
a = []
bingli = []
zhuangtai = [[0 for x in range(m)] for y in range(n)]

for i in range(n):
    a.append(list(map(int, raw_input().strip().split())))



def fangzhen(a, i, j):
    global count
    count += a[i][j]
    if i+1 <= 19 and j <= 19 and a[i+1][j] != 0 and zhuangtai[i+1][j] == 0:
        zhuangtai[i + 1][j] = 1
        fangzhen(a, i+1, j)

    if i <= 19 and j+1 <= 19 and a[i][j+1] != 0 and zhuangtai[i][j+1] == 0:
        zhuangtai[i][j + 1] = 1
        fangzhen(a, i, j+1)

    if i+1 <= 19 and j+1 <= 19 and a[i+1][j+1] != 0 and zhuangtai[i+1][j+1] == 0:
        zhuangtai[i + 1][j + 1] = 1
        fangzhen(a, i+1, j+1)

    if i-1 >= 0 and j >= 0 and a[i-1][j] != 0 and zhuangtai[i-1][j] == 0:
        zhuangtai[i - 1][j] = 1
        fangzhen(a, i-1, j)

    if i >= 0 and j-1 >= 0 and a[i][j-1] != 0 and zhuangtai[i][j-1] == 0:
        zhuangtai[i][j - 1] = 1
        fangzhen(a, i, j-1)

    if i-1 >= 0 and j-1 >= 0 and a[i-1][j-1] != 0 and zhuangtai[i-1][j-1] == 0:
        zhuangtai[i - 1][j - 1] = 1
        fangzhen(a, i-1, j-1)

    if i+1 <= 19 and j-1 >= 0 and a[i+1][j-1] != 0 and zhuangtai[i+1][j-1] == 0:
        zhuangtai[i + 1][j - 1] = 1
        fangzhen(a, i+1, j-1)

    if i-1 >= 0 and j+1 <= 19 and a[i-1][j+1] != 0 and zhuangtai[i-1][j+1] == 0:
        zhuangtai[i - 1][j + 1] = 1
        fangzhen(a, i-1, j+1)
    return count


for i in range(n):
    for j in range(m):
        if a[i][j] != 0 and zhuangtai[i][j] == 0:
            zhuangtai[i][j] = 1
            global count
            count = 0
            fangzhen(a, i, j)
            bingli.append(count)

bingli_max = max(bingli)
bingli_min = min(bingli)
print(bingli_max)
print(bingli_min)

在下刚刚入门算法,萌新一枚,大家一起共勉。希望大佬不吝赐教。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142413.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为 PHPer 准备的 Go 入门知识

    为 PHPer 准备的 Go 入门知识

    2022年2月17日
    42
  • 区块链体验的几点建议,CIC共识网络让保险操作更智能

    区块链体验的几点建议,CIC共识网络让保险操作更智能自从双持了iOS和Android之后,就开始了CIC共识网络App在不同平台的玩耍,使用了一段时间之后,掰扯掰扯下自己的使用体验。1、先说下邀请安装体验,邀请人分别网址邀请和二维码邀请,就CIC的邀请方式有2种,比较全面。但根据本人使用的多款区块链APP来看,目前CIC的邀请不论是网址邀请,还是二维码邀请,广告词内容和二维码界面基本没什么特色,只是平白的介绍而已。一是广告词缺乏吸引客户主动注册的文…

    2022年5月28日
    38
  • java性能优化技巧二

    1. 谨慎对待Java的循环遍历Java中的列表遍历可比它看起来要麻烦多了。就以下面两段代码为例:A:1234private final List _bars;for(Bar bar : _bars) {    //Do important stuff}B:12345private final List _bars;for(int i = 0; i _bars.size(); i++) {Bar

    2022年3月11日
    42
  • 百度分享代码怎么做_html按钮代码样式

    百度分享代码怎么做_html按钮代码样式百度分享按钮,可以帮用户实现一键将网站内容分享到第三方网站,但它的功能与作用远远不止便于分享。今天,小小课堂网为大家带来的是百度分享按钮代码安装及对网站SEO优化外链的效果。希望对大家有所帮助。一、百度分享代码的安装1、登录百度分享平台网址:http://share.baidu.com登录完成后,点击免费获取代码。2、代码功能选择这里只介绍自由选择版,如果需要专业开发版的请自行查阅相关资料。页面分…

    2022年10月8日
    4
  • SQL Server 2014聚集列存储索引

    SQL Server 2014聚集列存储索引

    2021年11月26日
    41
  • 空间回归与地理加权_地理加权回归处理点数据

    空间回归与地理加权_地理加权回归处理点数据本章有数学公式……对数学过敏者慎入……前文再续,书接上一回……上一次说到,在改进全局回归的基础上,GWR终于横空出世了,从此空间分析领域终于有了自己专用的回归算法。如果说,空间统计有别于经典统计学的两大特征:空间相关性和空间异质性,莫兰指数等可以用来量化空间相关性,那么地理加权回归,就可以用来量化空间异质性。在对全局回归问题的改进中,局部回归可以说是最简单的方法,GWR继续应用了局

    2022年10月7日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号