关注
#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
相关推荐
11-20 13:35
广东白云学院 数据运营 立马来offer:去哪个大厂了啊,其实你选了小公司,遇到不开心的也会后悔没有选择大平台。别美化小公司了,至少大厂有平台,有二次选择的能力
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
252651次浏览 2054人参与
# 学历or实习经历,哪个更重要 #
41545次浏览 303人参与
# 北方华创开奖 #
23072次浏览 259人参与
# 地方国企笔面经互助 #
2654次浏览 6人参与
# 你最想要的公司福利是? #
40517次浏览 128人参与
# 选完offer后,你后悔学本专业吗 #
11567次浏览 78人参与
# 应届生被毁约被毁意向了怎么办 #
27496次浏览 240人参与
# 查收我的offer竞争力报告 #
17634次浏览 234人参与
# 一觉醒来,我觉醒了超级打工人系统 #
3028次浏览 35人参与
# 机械应届生薪资要多少才合适? #
12450次浏览 60人参与
# 如何写一份好简历 #
603106次浏览 8463人参与
# 秋招OC许愿 #
227052次浏览 1874人参与
# 秋招被确诊为…… #
57288次浏览 312人参与
# 你觉得第一学历对求职有影响吗? #
14929次浏览 121人参与
# 面试题刺客退退退 #
137502次浏览 2092人参与
# 总结:哪家公司面试体验感最差 #
25920次浏览 129人参与
# 来聊聊机械薪资天花板是哪家 #
64754次浏览 436人参与
# 不给转正的实习,你还去吗 #
1517724次浏览 16979人参与
# 比亚迪求职进展汇总 #
562036次浏览 2778人参与
# 实习,投递多份简历没人回复怎么办 #
2392151次浏览 34307人参与
# 校招入职后的感受 #
157086次浏览 1961人参与