Python练习题1
来源:互联网 发布:java实现支付宝转账 编辑:程序博客网 时间:2024/06/02 03:45
原题:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
扩展:求N个数字集合组成的所有M位数
思路:先确定各个数字的位置,然后进行组合
# _*_ coding:utf-8 -*-'''Created on 2017年7月21日@author: I'python'''global long_list#数字与其对应的位置列表global NUM#数字总个数global BIT#结果位数global result_set#最终结果集合def cacl_place(num_list): aux_list = num_list for idx, item in enumerate(aux_list): tmp_list = aux_list[0:idx] tmp_list.extend(aux_list[idx+1:]) new_dic = [item,len(tmp_list)]#计算数字与其对应的位置 if len(tmp_list) == (NUM-1) or len(tmp_list) < BIT:#过滤不符合位置条件的结果 long_list.append(new_dic) if len(tmp_list) > 1: cacl_place(tmp_list)def get_result(): rst = 1 for item in long_list: if(item[1] == (NUM - 1)):#处理最高位 rst = (rst // (10 ** (BIT-1))) * (10 ** (BIT-1))#清零该位及后面的位 rst = item[0] * (10 ** (BIT-1)) else:#处理低位 rst = (rst // (10 ** item[1])) * (10 ** (item[1]))#清零该位及后面的位 rst += (item[0] * (10 ** (item[1]-1))) if item[1] == 1: result_set.add(rst)if __name__ == '__main__': NUM = 5 BIT = 3 result_set = set() long_list = [] num_list = [1, 2, 3, 4, 5] cacl_place(num_list) get_result() print '共' + str(len(result_set)) + '个结果:' print sorted(result_set)
阅读全文
0 0
- python 练习题1
- Python随笔1-练习题
- Python练习题1
- python练习题 1-10
- python(1)练习题
- Python--day7 练习题1
- Python练习题(1)
- python练习题1
- Python 100练习题[1-10]
- Python练习题 15-1立方
- python练习题 1 简易登录
- Python 练习题
- python 练习题
- python 练习题
- python练习题
- Python练习题
- Python练习题
- Python练习题
- Kubernetes核心原理(一)之API Server
- RH124-第七节-进程
- git--自定义
- rsync同步文件
- 【基础算法强化】(1)分治算法与动态规划
- Python练习题1
- Jvm原理和优化
- static的详解 ----转载
- poj 1458 LCS(最长公共子序列)
- Google VR Demo光标系统分析
- 国务院正式发布《新一代人工智能发展规划》
- fastDFS+nginx
- java实现插入排序
- C#高级编程(第7版)pdf