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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM