首页 > 其他分享 >【csp-3】排列与组合

【csp-3】排列与组合

时间:2023-08-19 16:11:44浏览次数:36  
标签:now 排列 组合 int sum namespace flag include csp

组合:n个数选m个数,从小到大第k个选择是什么

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<bits/stdc++.h>
using namespace std;
int flag,n,m,a[21],vis[21],k,sum;

void dfs(int now,int last){
    if(flag==1) return ;
    if(now==m+1){
        sum++;
        if(sum==k){
            flag=1; 
            for(int i=1;i<=m;i++)
                printf("%d ",a[i]);
            printf("\n");
            return;
        }
    }
    for(int i=last;i<=n;i++){
        if(vis[i]==1) continue;
        vis[i]=1;
        a[now]=i;
        dfs(now+1,i+1);
        vis[i]=0;
    }
}

int main(){
    //freopen("zuhe.in","r",stdin);
    //freopen("zuhe.out","w",stdout);
    scanf("%d %d %d",&n,&m,&k);
    dfs(1,1); 
    return 0;
}

排列:n个数,第m大个全排列

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<bits/stdc++.h>
using namespace std;
int flag,n,m,k;
int a[1002],vis[1002];
void dfs(int now){
    if(flag==1) return ; 
    if(now==n+1){
        k++;
        if(k==m){
            flag=1;
            for(int i=1;i<=n;i++)
                printf("%d ",a[i]);
            return;
        }
    }
    for(int i=1;i<=n;i++){
        if(vis[i]==1) continue;
        vis[i]=1;
        a[now]=i;
        dfs(now+1);
        vis[i]=0;
    }
}

int main(){
    freopen("pailie.in","r",stdin);
    freopen("pailie.out","w",stdout);
    scanf("%d %d",&n,&m);
    dfs(1);
    return 0;
}

另一种方法求解:

// luogu-judger-enable-o2
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std;
int n,a[18];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        { a[i]=i; printf("    %d",i); } 
    while(next_permutation(a+1,a+1+n)){
          printf("\n");
          for(int i=1;i<=n;i++) 
              printf("    %d",a[i]);
    }
    return 0;
}

 

标签:now,排列,组合,int,sum,namespace,flag,include,csp
From: https://www.cnblogs.com/wuhu-JJJ/p/17642599.html

相关文章

  • 【考后总结】8 月 CSP-S 模拟赛 7
    8.19CSP模拟25给我一首歌的时间-周杰伦雨淋湿了天空毁得很讲究你说你不懂为何在这时牵手我晒干了沉默悔得很冲动就算这是做错也只是怕错过在一起叫梦分开了叫痛是不是说没有做完的梦最痛迷路的后果我能承受这最后的出口在爱过了才有能不能给我一首歌的时......
  • CSP模拟24
    yspm专场2。原神派蒙、药水泡面、医生拍门、浴室泡沫A.原神派蒙思路结论:如果序列原先就合法,答案为\(0\);否则,最多使用两个寄存器。我们对\(i\rightarrowa_i\)建边得到若干个环,我们单独考虑一个环如何操作。对于一个长度为\(4\)的数列,再包含两个寄存器,设两个寄......
  • 如何用随机方法求解组合优化问题(六)
    模拟退火算法的参数选择这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(六))的学习与记录。算法实现需要确定的参数:初始温度\(t_0\);温度\(t\)的衰减函数,即温度的下降方法;算法的终止准则,终止温度\(t_f\)或者终止条件;每个温度\(t\)下的......
  • 3 CSS组合选择器
    3组合选择器页面元素比较复杂,存在多个嵌套。为了更加灵活选择页面中的元素,CSS中还提供了组合选择器。组合选择器就是将多个基本选择器通过一定的规则连接起来组成一个复杂选择器。后代子代选择器<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><tit......
  • Oracle 查看用户下所有表注释行数,查看所有索引,组合索引
    --当前用户所有表注释行数selectutc.table_name,utc.COMMENTS,ut.num_rowsfromuser_tab_commentsutc,user_tablesutwhereutc.table_name=ut.table_name--当前用户所有索引组合索引selectdistinctt.table_name,t.index_name,listagg(t.column_name,',......
  • CompositePattern-组合模式
    在C#中,组合模式(CompositePattern)是一种结构型设计模式,它允许您将对象组合成树状的结构,以表示部分-整体的层次关系,使得客户端可以以一致的方式处理单个对象和对象组合。在组合模式中,有以下几个角色:Component(组件):是组合中所有对象的通用接口,可以是抽象类或接口。它声明了一些操作......
  • java编程题,打印n对括号的全部有效组合
    如题所述,当n=3时,可能的组合有:(()()),((())),()(()),(())(),()()()代码如下(有注释):importjava.util.ArrayList;importjava.util.List;publicclassTest06{/***通过递归生成n对括号的全部有效组合*@paramlist装括号组合的容器*@paramleftRem左括号剩余数量*@paramrightRe......
  • 2023北京/杭州/深圳CSPM-3国标项目管理中级认证招生
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • tfs 迁入解决方案缺少项目文件[*.csproj]
    .csproj、.vssscc没办法签入TFS怎么办?试图将VisualStudio文件上传到TeamFoundationServer中,但是签入了解决方案文件,项目文件一个都没签入,没办法,就右键,手工将文件添加到源代码管理器。但是.csproj、.vssscc并没有在VisualStudio的解决方案资源管理器中出现,怎么将......
  • 深入理解 Elasticsearch 中的倒排索引与倒排列表
    在现代的后端开发中,搜索引擎已经成为了许多应用不可或缺的一部分。Elasticsearch作为一款强大的搜索引擎和分布式数据存储系统,其背后所使用的核心技术之一就是倒排索引(InvertedIndex)。本文将深入探讨倒排索引的原理,以及在Elasticsearch中如何利用倒排索引进行高效的全文搜索。......