55分求助,超时
查看原帖
55分求助,超时
780434
water2014楼主2023/5/17 19:55

信封问题

题目描述

某人写了 nn 封信和 nn 个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。

输入格式

一个信封数 nn,保证 n≤20n \le 20。

输出格式

一个整数,代表有多少种情况。

样例 #1

样例输入 #1

2

样例输出 #1

1

样例 #2

样例输入 #2

3

样例输出 #2

2

提示

对于 100%100 \% 的数据,1≤n≤201 \le n \le 20。

#include <bits/stdc++.h> using namespace std; int a[25]; int main(){ int n, ans = 0; cin >> n; for (int i = 1;i <= n;i++){ a[i] = i; } do{ int f = 0; for (int i = 1;i <= n;i++){ if (a[i] == i){ f = 1; break; } } if (f == 0){ ans++; } }while (next_permutation(a + 1, a + 1 + n)); cout << ans << endl; return 0; }

2023/5/17 19:55
加载中...