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

      

  • 相关阅读:
    build/envsetup.sh 脚本分析 lunch函数
    DEDE自动审核会员发表的最新文章的修改方法
    php学习笔记(三)――操作符与控制结构
    简单的会话类
    学习PHP几个数学计算的内部函数
    关于gotozf学习笔记(11/08/06 12:07)
    再谈中文分词php类
    原站完整打包PHP+MYSQL,可做仿53客服在线客服系统,多用户多国语言企业版
    白话经典算法系列之二 直接插入排序的三种实现
    php 代码运行时间查看类
  • 原文地址:https://www.cnblogs.com/Chen-K/p/11663578.html
Copyright © 2020-2023  润新知