您的位置:首页 > 博客中心 > 互联网 >

函数综合练习2152+2060

时间:2022-05-11 12:19

2152 数字组合

现在小瓜有1到n这n个整数,他想知道用这n个整数组成一个长度为n的数字序列的所有方法(每个整数可以重复使用)。你能帮助他吗?

输入

一行一个整数n(1<=n<=6)。

输出

若干行,每行表示用1到n组成一个长度为n的数字序列的一种方法。所有方法按字典序输出。

输入样例

2

输出样例

1 1
1 2
2 1
2 2
#include 
using namespace std;

int n, ans[10];

void doit(int k) {
    if (k == n + 1) {
        for (int i = 1; i <= n; ++i) {
            cout << ans[i] << ‘ ‘;
        }
        cout << endl;
        return;
    }
    for (int i = 1; i <=n; ++i) {
        ans[k] = i;
        doit(k + 1);
    }
}

int main() {
    cin >> n;
    doit(1);
    
    return 0;
}

 

  

2060 全排列

输入一个整数n(n <= 9),输出1、2、3、······、n这n个数的全排列(按照字典序输出)。

输入

一个整数n

输出

多行,每行表示一种排列,行内使用空格分隔相邻两数。

输入样例

3

输出样例

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include 
using namespace std;

int n;
int ans[10], book[10];

void doit(int k) {
    if (k == n + 1) {
        for (int i = 1; i <= n; ++i) {
            cout << ans[i] << ‘ ‘;
        }
        cout << endl;
        return;
    }
    for (int i = 1; i <= n; ++i) {
        if (book[i] == 0) {
            ans[k] = i;
            book[i] = 1;
            doit(k + 1);
            book[i] = 0;
        }
    }
}

int main() {
    cin >> n;
    doit(1);
    
    return 0;
}

 

本类排行

今日推荐

热门手游