关注
#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-16 21:21
中国矿业大学徐海学院 Java 想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声:
### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0
你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客2025仙途报告 #
2490次浏览 86人参与
# 中美关系回暖,你会选择出海吗? #
13948次浏览 141人参与
# 2025年终总结 #
175772次浏览 2976人参与
# 你面试体验感最差/最好的公司 #
20957次浏览 346人参与
# 秋招落幕,你是He or Be #
14319次浏览 276人参与
# 中美关税战对我们有哪些影响 #
49932次浏览 392人参与
# 一人说一个提前实习的好处 #
12551次浏览 215人参与
# 今年你最想重开的一场面试是? #
4947次浏览 72人参与
# 重来一次,你会对开始求职的自己说 #
6637次浏览 165人参与
# 实习没事做是福还是祸? #
18035次浏览 266人参与
# 找工作,行业重要还是岗位重要? #
85584次浏览 1699人参与
# 机械制造秋招总结 #
97295次浏览 878人参与
# 礼物开箱Plog #
1104次浏览 39人参与
# 团建是“福利”还是是 “渡劫” #
7814次浏览 158人参与
# 工作中听到最受打击的一句话 #
7632次浏览 122人参与
# 考公VS就业,你怎么选? #
88052次浏览 496人参与
# 网易求职进展汇总 #
172459次浏览 1422人参与
# 你小心翼翼的闯过多大的祸? #
11580次浏览 168人参与
# 哪些行业值得去? #
14360次浏览 74人参与
# 国央企薪资爆料 #
136543次浏览 597人参与
查看1道真题和解析