首页 > 其他分享 >permutation 不仅仅排列,组合也可以

permutation 不仅仅排列,组合也可以

时间:2024-08-08 10:54:19浏览次数:13  
标签:不仅仅 do 排列 int namespace permutation using include

排序: 1——n 所有不重复的排列

include <bits/stdc++.h>

using namespace std;
int a[10];
int main()
{
int n,i,j=1,k;
cin>>n;
for(i=1;i<=n;i++)
{
a[i]=i; //a[1~n]=1——n
}
do
{
for(k=1;k<=n;k++) printf("%5d",a[k]);
printf("\n");
}while(next_permutation(a+1,a+n+1));
return 0;
}
组合:n 个元素中抽出 r 个元素

include

include

int x[30];//x[i]代表第i选或不选,0代表选,1代表不选
using namespace std;
int main()
{
int n,r;
scanf("%d%d",&n,&r);//读入n、r
for(int i=r+1;i<=n;++i)
x[i]=1; //赋初始值
do
{

    for(int i=1;i<=n;++i)
        printf("%3d",x[i]);//如果是0就输出,注意三个常宽
    printf("\n");//换行
    
    for(int i=1;i<=n;++i)
        if(x[i]==0) printf("%3d",i);//如果是0就输出,注意三个常宽
    printf("\n");//换行
}while(next_permutation(x+1,x+n+1));//生成下一个 排序是对 0 0 0 1 1 排序组合
return 0;//返回

}

0 0 0 1 1
1 2 3
0 0 1 0 1
1 2 4
0 0 1 1 0
1 2 5
0 1 0 0 1
1 3 4
0 1 0 1 0
1 3 5
0 1 1 0 0
1 4 5
1 0 0 0 1
2 3 4
1 0 0 1 0
2 3 5
1 0 1 0 0
2 4 5
1 1 0 0 0
3 4 5

标签:不仅仅,do,排列,int,namespace,permutation,using,include
From: https://www.cnblogs.com/bolincharles/p/18348516

相关文章

  • 一个小学生蒟蒻对简单排列组合的认知和了解
    一个小学生蒟蒻对简单排列组合的认知和了解呃呃呃呃呃....可能写的有点不咋好...呃呃呃神马是排列组合神马是排列组合呢?我感觉我也不太清楚排列组合是组合数学中的基础。排列就是指从给定个数的元素中取出指定个数的元素进行排序;组合则是指从给定个数的元素中仅仅取出指定个......
  • 一个蒟蒻小学生尝试学习高级排列组合
    一个蒟蒻小学生尝试学习高级排列组合呃呃呃呃呃呃,我不咋会写,如有不对的地方欢迎纠正紧接上文我们已经了解了基础的排列组合,我们可以接着往下学习排列组合的变种了.1.排列组合的变种1-1.多重集的排列数+多重组合数大家一定要区分多重组合数与多重集的组合数!两者是完......
  • 笔记——排列组合
    蓝月の笔记——排列组合篇摘要万恶的数学!Part1加乘原理小学奥数内容加法原理:当多个方案并列(即互不影响)时,总方案数为各个方案数之和例:共有\(k\)种交通工具可以从A地到B地,第\(i\)种交通工具有\(a_i\)班次,那么从A地到B地的总方案数为\(\sum_{1\lei\lek}a_i\)乘......
  • NC 没有重复项数字的全排列
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述给出一组数字,返回该组数字的所有排列例如:[1,2,3]的所有排列如下[......
  • 可用于机器学习的排列组合枚举算法含passcal - c shap-c源码
    可用于机器学习的排列组合枚举算法含passcal-cshap-c源码1机器学习和数据挖掘• 特征选择:在机器学习中,需要从多个特征中选择最有价值的组合。通过枚举不同的特征组合,可以找到最佳的特征集合。• 超参数优化:在训练模型时,需要调整多个超参数。通过枚举不同的超参数组......
  • Manhattan Permutations
    首先观察样例,不难发现有可能\(k\)为奇的时候无解证明:《离散数学》中有一道题目的trick是\(|i-j|\)与\(i+j\)的奇偶性相同,所以曼哈顿排列的奇偶性与\(p_1+1+p_2+2+...+p_n+n=2(1+2+3+...+n)\),后者显然为偶数,所以\(k\)为奇时无解其次一个很自然的想法就是当\(p\)为\([n,n-1,n-2,........
  • *编写一个程序,生成100个1~10范围内的随机数。并以降序排列
    /编写一个程序,生成100个1~10范围内的随机数。并以降序排列(srand()函数获取随机数种子,rand()函数产生随机数字)/#include<stdio.h>#include<stdlib.h>#include<time.h>#defineSIZE100intmain(void){intnumbers[SIZE];inttemp=0;srand(time(NULL));......
  • 实验2-5-1 求排列数
    本题要求实现一个计算阶乘的简单函数,使得可以利用该函数,根据公式算出从n个不同元素中取出m个元素(0<m≤n)的排列数。函数接口定义:doublefact(intn);其中n是用户传入的参数,函数返回n的阶乘。#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>doublefact(intn)......
  • Splittable Permutations
    第一次自己独立做出来的*2500,纪念一下首先模拟样例不难发现我们可以确定在\(l,r\)中出现过的数字(称这些数为“固定数”)的相对顺序(比如第一个样例,相对顺序为6425,我们只用插入\(1\)和\(3\)就好了),用链表维护就好了考虑剩下的某个数\(x\),不难发现它能放在的地方必须要求与其相邻......
  • (算法)全排列Ⅱ————<递归>
    1.题⽬链接:47.全排列II 2.题⽬描述:3.解法:算法思路:因为题⽬不要求返回的排列顺序,因此我们可以对初始状态排序,将所有相同的元素放在各⾃相邻的位置,⽅便之后操作。因为重复元素的存在,我们在选择元素进⾏全排列时,可能会存在重复排列,例如:[1,2,1],所有的下标排列为:  按......