迅雷2018演算法工程師-程式設計題-python
阿新 • • 發佈:2018-10-31
1. 用x,y表示一個整數範圍區間,現在輸入一組這樣的範圍區間(用空格隔開),請輸出這些區間的合併。
輸入描述:
一行整數,多個區間用空格隔開。區間的逗號是英文字元。
輸出描述:
合併後的區間,用過空格隔開,行末無空格
''' 1.首先按照x元素排序,把第一個區間存入res 2.從第二個開始遍歷: 如果當前區間與res[-1]無重疊,直接將當前區間append到res 如果有重疊,將res[-1]的end值更新為max(res[-1]的end值,當前區間end值) ''' ss = input().split() ss = [i.split(',') for i in ss] s=[] for i in range(len(ss)): s.append(list(map(int,ss[i]))) s.sort() res = [s[0]] for i in range(1,len(s[1:])+1): if s[i][0]<=res[-1][1]: res[-1][1] = max(s[i][1],res[-1][1]) else: res.append(s[i]) res = [','.join([str(j) for j in i]) for i in res] res = ' '.join(res) print(res)
2. 輸入一個有符號整數,輸出該整數的反轉值,如:
輸入1:123456,輸出1:654321;
輸入2:-123456,輸出2:-654321
# 先判斷是否是負數,然後利用字串反轉。
a=input()
if a[0]=='-':
b = '-'+a[1:][::-1]
else:
b = a[::-1]
print(int(b))
3. 給定整數n,取若干個1到n的整數可求和等於整數m,程式設計求出所有組合的個數。比如當n=6,m=8時,有四種組合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小於120
輸入描述:
整數n和m
輸出描述:
求和等於m的所有組合的個數。
輸入例子1:
6 8
輸出例子1:
4
超時,程式碼的複雜度有點高,通過率是60%。
# 遞迴,含n,與不含n def getCount(n,m): if n<1 or m<1: return 0 sum=0 if m<n: n=m if m==n: sum=sum+1 sum=sum+getCount(n-1,m) sum=sum+getCount(n-1,m-n) return sum n,m=list(map(int,input().split())) print(getCount(n,m))