t题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析 遍历全部可能,把有重复的剃掉。
这道题的解法很简单,可以用暴力枚举的方法。具体步骤如下:
- 从1、2、3、4中选出第一个数字,共有4种选法;
- 从剩下的数字中选出第二个数字,共有3种选法;
- 从剩下的数字中选出第三个数字,共有2种选法;
- 将选出的3个数字组合起来,共有4×3×2=24种组合方式。
但是,由于题目要求互不相同且无重复数字的三位数,因此需要在组合的过程中去掉重复的数字,如123、231、312这样的组合都只算一种。因此,在第二步和第三步中,选出的数字要与之前已经选过的数字进行比较,如果有相同的,则跳过本次循环。
最终,得到的结果是24个互不相同且无重复数字的三位数,分别为:
123、124、132、134、143、142、213、214、231、234、243、241、312、314、321、324、342、341、423、421、432、431、413、412。
以下是一个Python程序,实现了上述的算法:
count = 0 # 计数器,记录符合条件的三位数的个数 for i in range(1, 5): # 第一个数字 for j in range(1, 5): # 第二个数字 if j == i: # 如果与第一个数字相同,则跳过本次循环 continue for k in range(1, 5): # 第三个数字 if k == i or k == j: # 如果与前两个数字中的任意一个相同,则跳过本次循环 continue num = i * 100 + j * 10 + k # 计算出符合条件的三位数 count += 1 print(num) print("共有{}个互不相同且无重复数字的三位数。".format(count))
程序输出:
123 124 132 134 143 142 213 214 231 234 243 241 312 314 321 324 342 341 423 421 432 431 413 412 共有24个互不相同且无重复数字的三位数。