1. 程式人生 > >2017.8.12線上筆試程式設計真題總結

2017.8.12線上筆試程式設計真題總結

    昨天參加了一個筆試,說實在做的很爛,自己主要剛遇上煩心事,心思也根本不在題目上,草草寫了就交卷了,今天重新開啟習題做一次,有幾道題目思路可能不是很對或者是沒有什麼思路,結果沒有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)


    如果需要或者感興趣的話可以在線上測試平臺簡單的測試一下,希望對於我尚未解決的幾道題目,高手不吝賜教,謝謝!