求編輯距離
題目
輸入2個字元串,求出這兩個字元串的編輯距離,比如字元串A="攜程歡迎您",字元串B="歡迎你程裡人",如計算A="攜程歡迎您",字元串B="歡迎你程裡人",則輸入隻需要傳入一個字元串
攜程歡迎您<ctrip>歡迎你程裡人
樣例輸入
攜程歡迎您<ctrip>歡迎你程裡人
樣例輸出
6
提示
編輯距離是給定兩個字元串 A和 B,計算出将A轉換成B所使用的最少操作數,操作分别可以有:
插入一個字元
删除一個字元
替換一個字元
AC解答
def edit_dis(str1,str2):
T = [[i+j for j in range(len(str2)+1)] for i in range(len(str1)+1)]
for i in range(1,len(str1)+1):
for j in range(1,len(str2)+1):
if str1[i-1] == str2[j-1]:
d=0
else:
d=1
T[i][j] = min(T[i-1][j]+1,T[i][j-1]+1,T[i-1][j-1]+d)
return T[len(str1)][len(str2)]
data = input().split('<ctrip>')
S1=data[0]
S2 =data[1]
print(edit_dis(S1,S2))
思路
當兩個字元串都為空串,那麼編輯距離為0;
當其中一個字元串為空串時,那麼編輯距離為另一個非空字元串的長度;
當兩個字元串均為非空時(長度分别為 i 和 j ),取以下三種情況最小值即可:
1、長度分别為 i-1 和 j 的字元串的編輯距離已知,那麼加1即可;
2、長度分别為 i 和 j-1 的字元串的編輯距離已知,那麼加1即可;
3、長度分别為 i-1 和 j-1 的字元串的編輯距離已知,此時考慮兩種情況,若第i個字元和第j個字元不同,那麼加1即可;如果不同,那麼不需要加1。
螺旋輸出
題目:
螺旋輸出矩陣數字。給定一個包含m行n列的矩陣,請按照順時針螺旋順序傳回矩陣内所有元素
輸入:
第一行:矩陣行數m,列數n,用空格隔開
其後m行:每一行的n個數字,用空格隔開
輸出:按順時針螺旋順序輸出矩陣内所有元素,以英文逗号分隔。
樣例輸入
3 3
1 2 3
4 5 6
7 8 9
樣例輸出
1,2,3,6,9,8,7,4,5
AC解答
n = list(map(int,input().split()))[0]
data=[]
for i in range(n):
temp_d = list(map(int,input().split()))
data.append(temp_d)
res =[]
def transpose(matrix):
new_matrix = []
for i in range(len(matrix[0])-1,-1,-1):
matrix1 = []
for j in range(len(matrix)):
matrix1.append(matrix[j][i])
new_matrix.append(matrix1)
return new_matrix
while len(data)>0:
res = res + data[0]
data.pop(0)
if len(data)>0:
data = transpose(data)
print(",".join(str(i) for i in res))
思路
每次記錄一行的數值,再利用轉置進行旋轉
算術平方根求解
題目
要求不能使用任何的數學庫函數,輸入一個數求該數的算術平方根,精确到小數點後 4位(四舍五入)。注:用數學庫函數不得分
輸入
輸入一個數字
輸出
輸出該數的算術平方根,精确到小數點後 4位(四舍五入)
樣例輸入
2
樣例輸出
1.4142
提示
保留小數點後4位,字尾0不删除
AC解答
n =int(input())
res=n**(1/2)
print('%.4f' % res)