关注
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//输入参数
int n;//输入n个数
int k;//有序对k对
vector<int> a;//输入序列a,包含1~n的n个数,有若干个数(不超过10个)是0
//输出参数
int cnt=0;//合法排列的数目
//输出perm数组,用于测试
void printperm(const vector<vector<int> > &perm)
{
for(int i=0;i<perm.size();i++)
{
for(int j=0;j<perm[0].size();j++)
cout<<perm[i][j]<<" ";
cout<<endl;
}
}
//将1~n全排列,放入二维数组perm
void creatperm(vector<vector<int> > &perm)
{
vector<int> temp;//1~n的临时vector
for(int i=1;i<=n;i++)
temp.push_back(i);
do{
perm.push_back(temp);
}while(next_permutation(temp.begin(), temp.end()));
}
//过滤,刷掉返回false,如果没有刷掉返回true
bool chooseperm(const vector<int> &permtemp)
{
for(int i=0;i<n;i++)
{
if(a[i])
{
if(a[i]!=permtemp[i])
return false;
}
}
return true;
}
//计算cnt
void count( const vector<vector<int> > &choose)
{
for(int i=0;i<choose.size();i++)
{
int ktemp=0;
vector<int> temp=choose[i];
for(int j=0;j<temp.size();j++)
{
for(int jj=j+1;jj<temp.size();jj++)
{
if(temp[j]<temp[jj])
ktemp++;
}
}
if(ktemp==k)
cnt++;
}
}
int main(){
//输入
cin>>n>>k;
for(int i=0;i<n;i++)
{
int temp;
cin>>temp;
a.push_back(temp);
}
//第一步
//先将1~n全排列(permutation),生成一个二维数组备用(每一行代表一种排序方式);
vector<vector<int> > perm;//用于存放全排列的二维vector
creatperm(perm);
cout<<"全排列:"<<endl;
printperm(perm);//测试生成是否正确
//第二步
//过滤该二维数组,选取满足特定位置上为输入序列中非0数的序列,生成新的二维数组;
vector<vector<int> > choose;//过滤之后的二维数组
for(int i=0;i<perm.size();i++)
{
if(chooseperm(perm[i]))
choose.push_back(perm[i]);
}
cout<<"过滤后:"<<endl;
printperm(choose);//测试生成是否正确
//第三步
//逐行验证其有序对是否为k,统计符合的个数;
count(choose);
cout<<"符合的排列个数"<<endl;
cout<<cnt<<endl;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
05-20 13:34
门头沟学院 嵌入式软件开发 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 后端实习什么算有产出10.0W
- 2... 悟已往之不谏,知来者之可追1.6W
- 3... 以Mentor视角,更喜欢有这些沟通技巧的实习生1.5W
- 4... 来算一算你的offer究竟到手工资多少!(详细教程)1.0W
- 5... 就是说有些招聘要求别太离谱噢1.0W
- 6... 找实习、找工作中如何管理好自己的情绪?9617
- 7... 双非本秋招字节转正失败春招重新拿下字节和腾讯9617
- 8... 腾讯云智一面面经7141
- 9... 暑期实习后,如何完成学生到职场人的身份转换?7071
- 10... 【26届四段大厂】实习爆炸产出方法论 2.06741
正在热议
更多
# 我的求职总结 #
23893次浏览 441人参与
# 我的工作日记 #
96541次浏览 1263人参与
# 毕业季,给职场新人一些建议 #
20091次浏览 363人参与
# 晒一晒你收到的礼盒 #
61718次浏览 371人参与
# 我的实习日记 #
2434068次浏览 25382人参与
# 辞职之后最想做的一件事 #
10088次浏览 157人参与
# Offer比较,求稳定还是求发展 #
49019次浏览 235人参与
# 薪资一样,你会选择去大厂还是小公司 #
16177次浏览 99人参与
# 你想吐槽公司的哪些规定 #
17062次浏览 66人参与
# 选offer应该考虑哪些因素 #
17547次浏览 275人参与
# 你见过最离谱的招聘要求是什么? #
188128次浏览 1401人参与
# 机械人还在等华为开奖吗? #
217106次浏览 1097人参与
# 第一份工作应该只看薪资吗 #
138492次浏览 1456人参与
# 秋招想进国企该如何准备 #
57753次浏览 374人参与
# 为了秋招你都做了哪些准备? #
10698次浏览 161人参与
# 在国企工作的人,躺平了吗? #
327526次浏览 3842人参与
# 你怀疑过自己的专业选择吗? #
17331次浏览 201人参与
# 牛客十周岁生日快乐 #
129544次浏览 1517人参与
# 你想留在一线还是回老家? #
37707次浏览 447人参与
# 你小时候最想从事什么职业 #
91266次浏览 1703人参与