题解-2个数字的排列
https://ac.xiaosaima.com/d/CD01_2404/p/179?tid=684d6adc1f050c39f92cb8df
✅ 题目解析
🧠 题意理解
输入一个正整数 ( n ),表示从 ( 1 ) 到 ( n ) 的所有数字。题目要求输出所有任取两个不同数字的排列情况,即:
- 每一组两个数字要考虑顺序(排列),所以 ( 1, 2 ) 和 ( 2, 1 ) 是两个不同的结果。
📐 数学知识解释
从 ( 1 ) 到 ( n ) 中任选两个不同数字,称为排列问题。
✏️ 解题思路
我们可以使用两个嵌套循环:
- 枚举第一个数 ( i ),从 ( 1 ) 到 ( n )
- 枚举第二个数 ( j ),从 ( 1 ) 到 ( n )
- 如果 ( i \ne j ),就输出这个组合
- 为了保证输出顺序满足题目要求(开头的数字从小到大),我们按顺序遍历 ( i )。
✅ C++ 代码
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// 两重循环枚举所有 i != j 的组合
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i != j) {
cout << i << " " << j << endl;
}
}
}
return 0;
}
📌 小结
本题考查嵌套循环和排列的基本数学概念:
使用两重循环枚举所有可能的组合
注意不要输出相同的两个数(如 2 2)
输出时确保先按 i 从小到大,再按 j 枚举

浙公网安备 33010602011771号