初识python 交叉排序

好吧,断断续续的在计蒜客上学了几次python,感觉语法很反人类,虽然当年刚从pascal转到c的时候也觉得c的语法很繁琐,不过好歹c的编译器都很nice,debug强大,但是在ubuntu下用sublime进行debug简直是噩梦(好吧,其实只是自己太懒又太水不愿意又不会写插件……)

最近想了想以后大概的方向,可能也就是机器学习或者是计算机图形这两大块了……在数学系想要去跟cs的人比项目估计是不太可能的了……在大一还是先把语言基础学好吧……


放上计蒜客上的一道最基础的题目……


  •  1000ms
  •  5000K

输入一行 k 个用空格分隔开的整数,依次为 n1, n2 … nk。请将所有下标不能被 3 但可以被 2 整除的数在这些数字原有的位置上进行升序排列,此外,将余下下标能被 3 整除的数在这些数字原有的位置上进行降序排列。

输出包括一行,与输入相对应的若干个整数,为排序后的结果,整数之间用空格分隔。

样例输入

1 5 4 3 10 7 19

样例输出

1 3 7 5 10 4 19

提示信息

请注意,题面中的下标是从 1 开始的哦!

# coding=utf-8
list=[]
for x in raw_input().split():
    list.append(int(x))  
cnt=len(list)
ll=cnt
list1=[]
list2=[]
list3=[]
for i in range(1,len(list)+1):
    if(i%2==0 and i%3!=0):
      list1.append(list[i-1])
    elif (i%3==0):
      list2.append(list[i-1])  
    else:
      list3.append(list[i-1])
list1.sort()
list2.sort(reverse = True)
lista=[]
for i in range(1,cnt+1):
    if((i)%2==0 and (i)%3!=0):
        lista.append(list1.pop(0))
    elif (i%3==0):
       lista.append(list2.pop(0))
    else :
       lista.append(list3.pop(0))
for i in range(0,cnt):
    print lista[i],

    

好吧,虽然是道最水的题目……


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ctrss/article/details/51560258
文章标签: python
个人分类: python
上一篇hdu 4355 Party All the Time 初识三分法
下一篇CF 699D Fix a Tree 并查集
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭