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=',')

      

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/Chen-K/p/11663578.html
Copyright © 2011-2022 走看看