组合数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
 
描述
找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
 
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543
542
541
532
531
521
432
431
421
321

思路:就是全排列嘛,可以衍生为八皇后问题

#include <iostream>
#include <cmath>
#include <cstdio> using namespace std;
int count = ;
int sum = ; bool rule(int *a, int num){ for (int i = ; i < num ; i++)
{
if (a[i-]<a[i])
{
return false;
}
}
return true; } void AllLine(int *a, int n, int k, int num){ if (k==n-)
{
if (count % sum== && rule(a,num))
{
int i;
for (i = ; i < num- ; i++)
{
cout<<a[i];
}
cout<<a[i]<<endl;
}
count++;
return;
}
else
{
for (int z = k ; z < n ; z++)
{
swap(a[z],a[k]);
AllLine(a,n,k+,num);
swap(a[z],a[k]);
}
} } int main(){ int n,num;
while(scanf("%d%d",&n,&num)!=EOF){ for (int k = ; k <= n-num ; k++)
{
sum *= k;
} int *a = new int[n];
for (int i = ; i < n ; i++)
{
a[i] = n-i;
}
AllLine(a,n,,num); } return ;
}

全排列基本模型(注:根据题型,可以将 int 数组换成 char 等):

#include <iostream>
#include <cmath>
using namespace std; void foo(int n,int k,int *a){
if(k==n-)
{
for(int i = ;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return;
}else{
for(int j = k; j < n; j++){
int temp=a[k];
a[k]=a[j];
a[j]=temp;
foo(n,k+,a);
temp=a[k];
a[k]=a[j];
a[j]=temp;
}
} } int main() {
int n=;
int *a = new int[n];
for(int i=;i<n;i++){
a[i]=i+;
}
for(int i=;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"begin"<<endl;
foo(n,,a);
cout<<"end"<<endl;
return ;
}

输出:

begin

end

【ACM】组合数 - 全排列的更多相关文章

  1. ACM 组合数

    组合数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 找出从自然数1.2.... .n(0<n<10)中任取r(0<r<=n)个数的所有组合 ...

  2. 2016 ACM/ICPC Asia Regional Shenyang Online 1003/HDU 5894 数学/组合数/逆元

    hannnnah_j’s Biological Test Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K ...

  3. 深搜最基础题---全排列And组合数

    这个是理解标记和取消标记,用一个vis数组来标记 全排列代码: #include <stdio.h> ]; ]; int n; void dfs(int step)//step是当前已经进 ...

  4. ACM数论之旅10---大组合数-卢卡斯定理(在下卢卡斯,你是我的Master吗?(。-`ω´-) )

    记得前几章的组合数吧 我们学了O(n^2)的做法,加上逆元,我们又会了O(n)的做法 现在来了新问题,如果n和m很大呢, 比如求C(n, m) % p  , n<=1e18,m<=1e18 ...

  5. Codeforces Gym10081 A.Arcade Game-康托展开、全排列、组合数变成递推的思想

    最近做到好多概率,组合数,全排列的题目,本咸鱼不会啊,我概率论都挂科了... 这个题学到了一个康托展开,有点用,瞎写一下... 康托展开: 适用对象:没有重复元素的全排列. 把一个整数X展开成如下形式 ...

  6. Two Graphs 牛客网暑期ACM多校训练营(第一场)D 图论基础知识 全排列

    链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 Two undirected simple graphs and where are isomo ...

  7. acm数论之旅--组合数(转载)

    随笔 - 20  文章 - 0  评论 - 73 ACM数论之旅8---组合数(组合大法好(,,• ₃ •,,) )  补充:全错排公式:https://blog.csdn.net/Carey_Lu/ ...

  8. [笔记]ACM笔记 - 组合数

    一.高中数学公式复习 , (好吧这个没学过但是既然看到了就一并抄过来了) 二.快速求组合数取模C(n, m)%p 当n和p大小不同时方法有不同. 1. n很小,p随意,p不需要为素数 1) 原理 使用 ...

  9. ACM题目————STL + 全排列

    今天碰到一个函数,感觉挺好用的,全排列函数 next_permutation! 求全排列的函数,基本上与自己写的DFS时间复杂度差不多,毕竟是标准库.(2018-1-4 添加) 话不多说,直接上题. ...

随机推荐

  1. 命令行启动nodejs方式 小总结

    之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...

  2. BZOJ2120:数颜色

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...

  3. python中string和bool的转换

    python中字符串"True" 和 "False"转为bool类型时, 不能通过bool(xx)强转. 注意是因为在python中,除了&apos;& ...

  4. hashcode和equals

    Java中集合(Collection):一类是List另外一类是Set: 区别:list中元素有序,可重复 Set元素无序,不能重复 如何保证元素不重复呢?Object.Equals 但是当添加的元素 ...

  5. elasticsearch2.x插件之一:marvel(简介)

    在 安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,又要下载license.Marvel-agent,又要下载安装Kibana,很多内容 不知道为何这样安装处理.仔细看了看ElasticS ...

  6. eclipse中使用Maven插件报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.

    步骤: 1.添加M2_HOME的环境变量 2.Preference->Java->Installed JREs->Edit 选择一个jdk 3.添加 -Dmaven.multiMod ...

  7. 使用LookAndFeel为界面更换皮肤

    ----------------siwuxie095                             在 Windows 系统中,默认的 Java 运行环境(JRE)会为当前的窗体程序 指定一 ...

  8. Learning Python 011 高级特性 2

    Python 高级特性 2 列表生成式 列表生成式就是指类似这样的代码:[x for x in range(1, 11)] >>> L = [x for x in range(1, ...

  9. 修复Ubuntu的引导

    重装win7后如何恢复ubuntu引导 在重装系统之后,开机启动界面的ubuntu引导不见了,直接进入新安装的window系统中.下面是如何恢复ubuntu引导的方法: 1)准备一张ubuntu系统安 ...

  10. 机器学习--PCA降维和Lasso算法

    1.PCA降维 降维有什么作用呢?数据在低维下更容易处理.更容易使用:相关特征,特别是重要特征更能在数据中明确的显示出来:如果只有两维或者三维的话,更便于可视化展示:去除数据噪声降低算法开销 常见的降 ...