阿里巴巴2017年秋招:最少砖块数被切中编程题

# -*-coding:utf-8 -*-
#code=utf-8
#code:utf-8
import sys
if __name__ == "__main__":
    result= 0
    dataList = input() #[[1,2,2,1],[3,2,1],[1,1,1,1,1,1],[2,1,1,2],[4,2]]    raw_input()输入
    lens=len(dataList)  #长度为5
    #print dataList[0] #打印input输入的list的中第一个list的值
    wallwidth=sum(map(int,dataList[0]))      #dataList[0]为[1,2,2,1]
    for index in xrange(1,wallwidth):   #线从长为1开始画,每次加1循环  循环计算每一行中line画中的空格数count
        count=0
        for col in xrange(lens): #每一行循环计算line的值和每一行中每一个值与line比较大小如[1,2,2,1]计算1与line=1是否相等,
            #相等则break,如果比line小,计算数组中第一个数list[0]与第二个数list[1]之和比line是否相等,比line的值大则break
            sumnum=0
            for row in xrange(len(dataList[col])):
                #data_1="-".join(map(str,dataList[col]))   #1,2,2,1
                #print ("data_1:%s  line:%s col:%s row:%s data_1.split('-')[row]:%s" %(data_1,index,col,row,data_1.split("-")[row]))
                #sumnum=sumnum+int(data_1.split("-")[row])
                sumnum=sumnum+dataList[col][row]
                if(sumnum==index):
                    count=count+1
                    break
                if(sumnum>index):
                    break
        print("count:%s result:%s" %(count,result))
        if(result<count):
            result=count
    minwall=lens-result
    print str(minwall) + "\n"

解题思路:

1、划线从line=1,计算每行对应的空格数,然后循环依次加1
2、计算每行对应的空格数,循环输入多少行的数据
3、如何计算第一行line为1的空格数,如果第一个数等于line,则在空格处,如果第一个数比line小,计算第一个数和第二个数之和与line比较,如果比它(line)大,跳出循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值