题解-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 枚举

posted @ 2025-07-19 10:18  stephen_zuo  阅读(22)  评论(0)    收藏  举报