2017.8.12在线笔试编程真题总结

320 篇文章 88 订阅
151 篇文章 4 订阅

    昨天参加了一个笔试,说实在做的很烂,自己主要刚遇上烦心事,心思也根本不在题目上,草草写了就交卷了,今天重新打开习题做一次,有几道题目思路可能不是很对或者是没有什么思路,结果没有AC,如果有通过的朋友还望可以指点一下,在这里简单贴一下8道题目的代码,我全都是使用python写的,有一个缺点就是会出现运行超时的问题,其中有两道题目都是运行超市只能AC50%,但是其中一道题目修改了策略之后就通过了,但是另一道还没有好的思路,好了不多说这些了,下面看代码:


#!usr/bin/env python
#encoding:utf-8

'''
__Author__:沂水寒城
功能:8.12网易编程题目
'''


'''
彩砖问题
'''

one=raw_input()
one_list=list(one)
length=len(set(one_list))
if length>=3:
    print 0
else:
    print length


'''
等差数列
'''
n=int(raw_input())
str_list=raw_input().split()
num_list=[int(one) for one in str_list]
num_list.sort()
cha=num_list[0]-num_list[1]
flag=True
for i in range(len(num_list)-1):
    if num_list[i]-num_list[i+1]==cha:
        pass
    else:
        flag=False
        break
if flag:
    print "Possible"
else:
    print "Impossible"


'''
交错01串
'''
one_str=raw_input()
length=len(one_str)
i=1
count=1
tmp_list=[]
flag=one_str[0]
while i<length:
    if one_str[i]!=flag:
        count+=1
        flag=one_str[i]
        i+=1
    else:
        tmp_list.append(count)
        count=1
        flag=one_str[i]
        i+=1
if tmp_list:
    print max(count,max(tmp_list))
else:
    print count


'''
操作序列
'''
n=int(raw_input())
str_list=raw_input().split()
if n%2==0:
    j=1
    i=0
else:
    j=0
    i=1
first_list=str_list[j:n:2]
first_list.reverse()
second_list=str_list[i:n:2]
first_list.extend(second_list)
print ' '.join(first_list)



'''
独立的小易
'''
str_list=raw_input().split()
num_list=[int(one) for one in str_list]
money=num_list[2]
fruit=num_list[1]
one_price=num_list[-1]
day_money=num_list[0]
if money-fruit*day_money>=0:
    money-=fruit*day_money
    count=fruit
    count+=money/(day_money+one_price)
else:
    count=money/day_money

print count


'''
小易喜欢的数列,运行超市了,通过50%
'''
str_list=raw_input().split()
n=int(str_list[0])
k=int(str_list[1])
matrix=[]
for i in range(k+5):
    matrix.append([0]*(n+5))
matrix[1][0]=1
for i in range(1,n+1):
    total=0
    for j in range(1,k+1):
        total+=matrix[j][i-1]
        total%=1000000007
    for j in range(1,k+1):
        tmp=0
        for m in range(2*j,k+1,j):
            tmp+=matrix[m][i-1]
            tmp%=1000000007
        matrix[j][i]=(total-tmp+1000000007)%1000000007
count=0
for i in range(k+1):
    count+=matrix[i][n]
    count%=1000000007
print count



'''
疯狂队列,时间有限只AC了20%
'''
n=int(raw_input())
str_list=raw_input().split()
num_list=[int(one) for one in str_list]
num_list.sort()
tmp_list=[]
tmp_list.append(num_list.pop())
tmp_list.append(num_list.pop(0))
tmp_list.insert(0,num_list.pop(0))
tmp=abs(tmp_list[0]-tmp_list[1])+abs(tmp_list[1]-tmp_list[2])
while len(num_list)>=2:
    first=num_list.pop(0)
    last=num_list.pop(-1)
    tmp1=abs(first-tmp_list[0])+abs(last-tmp_list[-1])
    tmp2=abs(last-tmp_list[0])+abs(first-tmp_list[-1])
    if tmp1>tmp2:
        tmp_list.insert(0,first)
        tmp_list.append(last)
        tmp+=tmp1
    else:
        tmp_list.insert(0,last)
        tmp_list.append(first)
        tmp+=tmp2
if num_list:
    node=num_list.pop()
    if node-tmp_list[0]>node-tmp_list[-1]:
        tmp_list.insert(0,node)
        tmp+=node-tmp_list[0]
    else:
        tmp_list.append(node)
        tmp+=node-tmp_list[-1]
print tmp


'''
堆棋子,没有好的思路只能AC10%
'''
n=int(raw_input())
x_str=raw_input().split()
x_list=[int(x) for x in x_str]
y_str=raw_input().split()
y_list=[int(y) for y in y_str]
res_list=[]
for i in range(1,n+1):
    tmp=10000000000000000
    for j in range(n):
        for k in range(n):
            total=0
            tmp_list=[]
            for h in range(n):
                x1=x_list[h]
                y1=y_list[h]
                dis=abs(x1-x_list[j])+abs(y1-y_list[k])
                total+=dis
                tmp_list.append(dis)
                if tmp_list:
                    total-=tmp_list.pop()
            tmp=min(tmp,total)
    res_list.append(tmp)
    result=[str(one) for one in res_list]
    print ' '.join(result)


    如果需要或者感兴趣的话可以在在线测试平台简单的测试一下,希望对于我尚未解决的几道题目,高手不吝赐教,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值