1 题目
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2 分析
本题的本质是排列组合问题,抽象的描述就是一共有3个空位,而有4个数,要将这4个数填入到空位中,且每个数在一次组合的过程中只能使用一次,求能组合成多少种不同的数。
- 类似于这种问题可以直接使用
for
循环嵌套,本题是组合成三位数,那么需要三层for
循环嵌套,由于每个位置可选择的数字有4个(即1,2,3,4),所以每层循环的始末为1和4 - 使用嵌套循环,由于每次循环都会有变量改变,所以组合成的数字必定是互不相同的,但是其中可能有重复的数字,所以需要加上一个
if
判断语句来筛选其中无重复的
3 实现
#include<stdio.h>
int main() {
for (int i = 1; i <= 4; i++)
for (int j = 1; j <= 4; j++)
for (int k = 1; k <= 4; k++)
if (i != j && i != k && j != k) { // 判断这个三位数无重复数字
printf("%d%d%d\n", i, j, k);
}
return 0;
}
4 运行结果
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432