“九韶杯”河科院 D.数列重组(含重复元素的全排列+构造方法)
对于含有重复元素序列的全排列,为了再次排列后得到的序列中各不重复,需要用到c++中的do{}while(next_permutation(a,a+n))函数
对于判断每次排序后的序列是否符合条件,用到了构造方法,见代码
bool pan(int x,int y){bool sheng=false;bool jiang=false;for(int i=x+1;i<=y;i++){if(a[i]>a[i-1]) sheng=true;else if(a[i]<a[i-1]) jiang=true;}if(sheng&&jiang) return false;else if((sheng&&!jiang)||(!sheng&&jiang)||(!sheng&&!jiang)) return true;
}
先假设序列既不上升又不下降,满足一个或多个含一种数字的序列(符合条件),如果序列中没有下降子序列,或者序列中没有上升子序列(符合条件)
完整代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int ans=0;
int a[10]={2, 3, 3, 3, 5, 6, 6, 7, 7, 8};
bool pan(int x,int y){bool sheng=false;bool jiang=false;for(int i=x+1;i<=y;i++){if(a[i]>a[i-1]) sheng=true;else if(a[i]<a[i-1]) jiang=true;}if(sheng&&jiang) return false;else if((sheng&&!jiang)||(!sheng&&jiang)||(!sheng&&!jiang)) return true;
}
bool check(){for(int i=0;i<8;i++){for(int j=i+1;j<9;j++){if(pan(0,i)&&pan(i+1,j)&&pan(j+1,9)){return true;}}}return false;
}
int main(){do{if(check()) ans++;}while(next_permutation(a,a+10));cout<<ans;
}
全排列递归
#include<bits/stdc++.h>
using namespace std;
#define ll long long
void swap(int a[],int i,int j){int temp;temp=a[i];a[i]=a[j];a[j]=temp;
}
void printa(int a[],int n){for(int i=0;i<n;i++){cout<<a[i]<<" ";}
}
void qpl(int a[],int p,int q){if(q==p){printa(a,q+1);cout<<endl;}for(int i=p;i<=q;i++){swap(a,p,i);qpl(a,p+1,q);swap(a,p,i);}}
int main(){int a[3]={1,2,3};qpl(a,0,2);}
“九韶杯”河科院 D.数列重组(含重复元素的全排列+构造方法)相关推荐
- “九韶杯”河科院程序设计协会第一届程序设计竞赛 【前六题解析】
https://ac.nowcoder.com/acm/contest/13493#rank 目录 A: 6的个数 B: 小明的作业 C: 斐波那契 D: 数列重组 E: 三角形个数 F: 字符串 A ...
- “九韶杯”河科院程序设计协会第一届程序设计竞赛题解
A-6的个数 题意 2021中,出现了多少个数字6 思路 for循环枚举对于每个数分解之后贡献答案就可以了 代码 #include <bits/stdc++.h> using na ...
- “九韶杯”河科院程序设计协会第一届程序设计竞赛 部分题解
(大型翻车 A 602 #include<bits/stdc++.h> using namespace std; int main(){int sum=0;for(int i=6;i< ...
- 最大子矩阵和问题(“九韶杯” 最强对手矩阵、AW的西瓜田)
最大子矩阵和问题就是在一个n*m的已知的全为数字的矩阵中,找到一个子矩阵,使这个矩阵各元素的和是所有子矩阵中最大的. 在我看来,这种类型的题分为两种类型: 1.固定了矩阵的长宽,求最大和: 2.没有固 ...
- 九章算法面试题54 带重复元素的全排列
九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...
- 科拉茨猜想,统计最终变成1所运算的次数,以及数列是否有重复
科拉茨猜想(Collatz Conjecture)3N+1 问题 任取一个正整数,如果这个数是偶数,则除以二.如果是奇数,乘以3再加1.重复上述步骤,最后起始数都会变成1时停止.这就是著名的科拉茨猜想 ...
- 我的未来该何去何从?双非院校计科院学嵌入式的大四小菜鸡的自我反思...
这篇文章其实挺早之前就想写的,而且当时就想好了两种心态来写.第一种是小有成就,拿到心满意足的offer来分享一下往昔踩过的坑:第二种就是庸庸碌碌,任重道远.很不幸现在的是第二种心态! 近来看到曾经的同 ...
- 北科院分子互作实战专题培训班(10月底/11月底班)(生物医药与营养健康协同创新中心)...
北京市科学技术研究院 生物医药与营养健康协同创新中心 生命健康前沿培训基地 培训基地将以京津冀协同为战略契机,围绕国内外生物医药与营养健康领域的知识链.技术链与产业链的前沿培训与协同交流需求,组织高端 ...
- Gut:北京生科院赵方庆团队揭示人体口腔菌群的稳定性和动态变化规律
人体口腔菌群的稳定性和动态变化规律 追踪体内人类口腔微生物组的积累,阐明了胃肠道入口的微生物群落动态变化 Tracing the accumulation of in vivo human oral ...
最新文章
- html loading原理,加载HTML-Loading HTML
- 饥荒海难机器人怎么用_饥荒:海难是一款野外生存游戏
- Premiere Pro CC2019安装资料及安装教程
- php is resource,PHP有没有is_type()函数?该如何解决 - is_resource
- Leetcode-转置矩阵(867)
- 联合利华搭上阿里云数据中台 精准营销新客提升2倍
- aspectj annotation- used in spring
- 惜缘-致家乡的一位女孩[原创]
- 微信支付php案例,小程序微信支付php案例
- 【Hadoop篇】--Hadoop常用命令总结
- 0x06 MySQL 单表查询
- a1 抛光等级spi_抛光等级对照表
- 论文Express | 把你的口哨变成莫扎特风,Facebook发布通用音乐迁移网络
- Zookeeper 和redis做分布式锁区别
- csol永恒python使用技巧大全_小甲鱼Python第028讲集合:因为懂你,所以永恒 | 课后测试题及参考答案...
- Mac电脑没声音了怎么办?
- 斗兽棋项目开发计划书
- 【Ubuntu升级报错】“the following signatures couldn’t be verified because the public key is not available”
- Wav ,flac,mp3,ogg 等的区别
- 为什么推荐使用hooks,它有什么好处?
热门文章
- 【RK3568调试记】给RK809添加音量调节功能
- dilation convolution
- web 网页登录 微信授权
- 安徽浮山2021高考成绩查询,安庆2021高考成绩查询入口
- 在Windows,Mac,Linux中快速安装配置Node.js环境,并安装VSCode, 完成Web端恒生交易日接口的图形化展示...
- linux tmpfs作用,Linux下tmpfs介绍与使用
- Java--Lambda表达式--使用/教程/实例
- Stylus中文网Stylus中文文档
- 算法面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- 皮具封边发黑_皮革封边怎么能有黑线!?