2017.8.12線上筆試程式設計真題總結
阿新 • • 發佈:2019-02-06
昨天參加了一個筆試,說實在做的很爛,自己主要剛遇上煩心事,心思也根本不在題目上,草草寫了就交卷了,今天重新開啟習題做一次,有幾道題目思路可能不是很對或者是沒有什麼思路,結果沒有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)
如果需要或者感興趣的話可以在線上測試平臺簡單的測試一下,希望對於我尚未解決的幾道題目,高手不吝賜教,謝謝!