在計蒜客遇到的一道題:
輸入一行 k 個用空格分隔開的整數,依次為 n1
, n2
… nk
。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行公升序排列,此外,將餘下下標能被 3 整除的數在這些數字原有的位置上進行降序排列。
輸出包括一行,與輸入相對應的若干個整數,為排序後的結果,整數之間用空格分隔。
我的思路如下:
1.根據原列表下標判斷,把列表的元素增添到新列表
2.新列表排序後
3.再根據原列表下標判斷,把新列表增添到最後的列表輸出
方法一:
list = [int(x) for x in raw_input().split(' ')]
list1 = #you can't use "list1 = list2 = list3 = " here!!!
list2 =
list3 =
list_sorted =
num_list1 = num_list2 = num_list3 = 0
for x in range(len(list)):
if (x+1) % 3 != 0 and (x+1) % 2 == 0:
elif (x+1) % 3 == 0:
else:list1 = sorted(list1)
list2 = sorted(list2, reverse = true)
for x in range(len(list)):
if (x+1) % 3 != 0 and (x+1) % 2 == 0:
num_list1 = num_list1 + 1
elif (x+1) % 3 == 0:
num_list2 = num_list2 + 1
else:
num_list3 = num_list3 + 1
print ' '.join(str(x) for x in list_sorted)
方法二:
list = [int(x) for x in raw_input().split(' ')]
list1 = #you can't use "list1 = list2 = list3 = " here!!!
list2 =
list3 =
list_sorted =
num_list1 = num_list2 = num_list3 = 0
for x in list:
if (list.index(x)+1) % 3 != 0 and (list.index(x)+1) % 2 == 0:
elif (list.index(x)+1) % 3 == 0:
else:list1 = sorted(list1)
list2 = sorted(list2, reverse = true)
for x in list:
if (list.index(x)+1) % 3 != 0 and (list.index(x)+1) % 2 == 0:
num_list1 = num_list1 + 1
elif (list.index(x)+1) % 3 == 0:
num_list2 = num_list2 + 1
else:
num_list3 = num_list3 + 1
print ' '.join(str(x) for x in list_sorted)
雖然做了出來,但我覺得方法還不完善,希望大家可以提提意見
python交叉輸出 Python交叉排序
最近在系統學習python的知識,學完排序之後,遇到了乙個排序的具體問題,問題具體描述如下 時間限制 1000ms 空間限制 5000k 輸入一行 k 個用空格分隔開的整數,依次為 n1,n2 nk。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行公升序排列,此外,將餘下下標...
初識python 交叉排序
好吧,斷斷續續的在計蒜客上學了幾次python,感覺語法很 雖然當年剛從pascal轉到c的時候也覺得c的語法很繁瑣,不過好歹c的編譯器都很nice,debug強大,但是在ubuntu下用sublime進行debug簡直是噩夢 好吧,其實只是自己太懶又太水不願意又不會寫外掛程式 最近想了想以後大概的...
交叉排序 氣泡排序
time limit 1000ms memory limit 32768k 有疑問?點這裡 輸入n個數,把所有奇數字置上的數從小到大排序,把偶數字置上的數從大到小排序。輸入的第一行是乙個正整數 n 2 n 100 第二行是 n個用空格隔開的整數。輸出只有一行 n個數,是按要求排序後的序列,用空格隔開...