zoukankan      html  css  js  c++  java
  • Python算法题(二)——国际象棋棋盘(排列组合问题,最小的K个数)

      题目一(输出国际象棋棋盘

      分析:

         用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

       主要代码: 

      for i in range(8):
        for j in range(8):
          if (i+j)%2!=0:
            print(chr(219)*2,end='')
          else:
            print(' ',end='')
        print('')


      题目二(排列组合问题)

       有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

       分析:

      我们可以先预测一下,共有24种情况。然后,可以用循环嵌套的方法,嵌套四个循环,类似 for a in range(1,5):,使数字在循环中不停变化,组合;再设定类似 a!=b 的判断条件,使其数字不能重复,最后输出符合条件的数字即可。

     主要代码:  

      for a in range(1,5):
        for b in range(1,5):
          for c in range(1,5):
            for d in range(1,5):
              if (a!=b) and (b!=c) and (c!=d) and (d!=a) and (a!=c) and (b!=d):
                print("%d%d%d%d" % (a, b, c, d))

      题目三(最小的K个数)

      输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

      分析:

      首先从键盘输入n个整数(列表输入)和k,然后临近的数字两两进行比较,按照从小到大的顺序进行交换,如果前面的值比后面的大,则交换顺序。这样一趟过去后,最小的数字被交换到了第一位;然后是次小的交换到了第二位,。。。,依次直到第k个数,停止交换。返回lists的前k个数(lists[0:k],前闭后开)。最后将结果再转成字符串输出。

      主要代码:  

      lst = list(input().split(','))
        def function(lst,k):
          length = len(lst)
          for i in range(k):
            for j in range(i+1,length):
              if lst[i] > lst[j]:
                lst[j],lst[i] = lst[i],lst[j]
          return lst[0:k]
       n=int(input())
      a=(function(lst,n))
      for x in a:
      print(x,end=',')

      

  • 相关阅读:
    快考试了
    16号了
    终于找到网吧了,写写今天
    又打了一天的篮球
    (转载)Andoid2.X各字段意义
    (转载)AndroidMatrixCursor
    (转载)非常好 必须要顶
    (转载)Android Cursor之MergeCursor
    七天开发安卓软件(二)
    “Visual Studio.net已检测到指定的Web服务器运行的不是Asp.net1.1版。您将无法运行Asp.net Web应用程序或服务”问题的解决方法
  • 原文地址:https://www.cnblogs.com/Chen-K/p/11663578.html
Copyright © 2011-2022 走看看