【基础入门题056】数字排列(一)
2023-09-14 09:01:29 时间
【基础入门题】2021.12.22
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?输出这些三位数。
编程语言:包括但不限于Python
题目来源:派森特给站每日刷题频道
方法一: 计数
count = 0
for a in range(1,5):
for b in range(1,5):
for c in range(1,5):
if a!=b and a!=c and b!=c:
print(a*100+b*10+c, end='\n' if count%6==5 else '\t')
count += 1
print('个数:',count)
123 124 132 134 142 143
213 214 231 234 241 243
312 314 321 324 341 342
412 413 421 423 431 432
个数: 24
方法二: 用数组
nums = []
for a in range(1,5):
for b in range(1,5):
for c in range(1,5):
if a!=b!=c!=a: #即: a!=b and a!=c and b!=c:
nums.append(a*100+b*10+c)
print('个数:',len(nums))
for i,n in enumerate(nums):
print(n, end='\n' if i%6==5 else '\t')
个数: 24
123 124 132 134 142 143
213 214 231 234 241 243
312 314 321 324 341 342
412 413 421 423 431 432
方法三: continue
nums = []
for a in range(1,5):
for b in range(1,5):
if b==a: continue
for c in range(1,5):
if c==a or c==b: continue
nums.append(a*100+b*10+c)
print('个数:',len(nums))
for i,n in enumerate(nums):
print(n, end='\n' if i%6==5 else '\t')
方法四:本质是排列,结果总个数=4x3x2=24
from itertools import permutations as perm
print('个数:',len(list(perm([1,2,3,4],3))))
for i,n in enumerate(perm([1,2,3,4],3)):
print(n[0]*100+n[1]*10+n[2], end='\n' if i%6==5 else '\t')
方法五:自定义排列函数
def perm(arr, pos=0):
if pos==len(arr): yield arr
for i in range(pos,len(arr)):
arr[pos],arr[i] = arr[i],arr[pos]
for _ in perm(arr, pos+1): yield _
arr[pos],arr[i] = arr[i],arr[pos]
for i,n in enumerate(perm([1,2,3,4])):
print(n[0]*100+n[1]*10+n[2], end='\n' if i%6==5 else '\t')
print('个数:',i+1)
相关文章
- Java基础算法详解
- 软硬件融合技术内幕 基础篇(3) —— CPU外面有什么? (上)
- PHP基础之重载技术,你学会了吗?
- python:类基础「建议收藏」
- Java基础入门笔记01——JAVASE,EE,ME 常用Dos命令,JVM,JRE,JDK「建议收藏」
- Java基础入门笔记02——文档注释,JavaDos文件,数据类型,类型转换,变量默认值问题
- tcpdump快速入门与基础
- Linux 之 Vim 编辑器从基础到大成使用
- 4-Kubernetes入门基础之Pod介绍
- IC验证入门基础01-Vim的配置
- 【网络入门】详解常用的基础网络知识(面试笔试常考内容)「建议收藏」
- 《量子化学软件基础》习题(6)——苯、丁二烯分子的CASSCF计算
- (三)算法基础——递归(2)
- 测试基础10问-上
- Django 基础快速入门
- MySQL基础及SQL入门
- java语言入门基础新接触java的程序员可以收藏详解编程语言
- Linux入门:掌握最基础的知识(linux入门知识)
- Docker-基础入门以及安装
- MySQL基础入门书籍推荐(mysql基础书籍)
- Oracle基础操作指南:快速入门(oracle基础操作手册)
- 了基础外MySQL数据库:除基础知识外,有什么新发现?(mysql除)
- 玩转SQLServer:从基础到进阶的用法研究(sqlserver 用法)