首页 > 试题广场 >

小红的不动点构造

[编程题]小红的不动点构造
  • 热度指数:418 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1024M,其他语言2048M
  • 算法知识视频讲解
\hspace{15pt}小红希望得到一个长为 n 的排列^\texttt{[1]},其中恰好有 k 个不动点^\texttt{[2]}
\hspace{15pt}请你帮她找到一个符合条件的排列。

【名词解释】
\hspace{15pt}排列^\texttt{[1]}:长度为 n 的排列是由 1,2,\dots,n 这 n 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\} 和 \{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
\hspace{15pt}不动点^\texttt{[2]}定义整数 i\left(1\leqq i \leqq m \right) 是长度为 m 的数组 \{a_1,a_2,\dots,a_m\} 的一个不动点,当且仅当满足 a_i = i

输入描述:
\hspace{15pt}第一行输入两个整数 n, k\left(1\leqq n\leqq 10;\ 0\leqq k \leqq n\right),代表排列的长度、不动点数量。


输出描述:
\hspace{15pt}如果无法构造符合条件的排列,请输出 -1,否则输出 n 个整数,代表一个符合条件的排列。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

4 2

输出

1 2 4 3
示例2

输入

3 3

输出

1 2 3
头像 ddb酱
发表于 2025-11-17 11:13:01
#include <bits/stdc++.h> using namespace std; #define endl "\n" using vi = vector<int>; template<class T> void out(const T 展开全文
头像 千雪水岷
发表于 2025-11-19 21:31:36
//头文件,也可以使用万能头 #include <iostream> #include <vector> //主程序 int main() { int n = 0, k = 0; std::cin >> n >> k; if 展开全文
头像 yujun2007
发表于 2025-11-12 20:45:40
#include <iostream> #include <vector> using namespace std; int main() { int n,k; cin >> n >> k; vector< 展开全文
头像 自由的风0450
发表于 2025-11-22 14:59:16
#include <iostream> using namespace std; int main() { int n,k; cin>>n>>k; if(n==k+1){ cout<<-1; r 展开全文
头像 牛客用户098471297
发表于 2025-12-05 11:19:33
#include<bits/stdc++.h> using namespace std; #define int long long #define endl '\n' #define quick ios::sync_with_stdio(false);cin.tie(0);cout.t 展开全文