组合+排列 以及伯努利装错信封问题思路

简介: 这段代码是C++实现的一个程序,用于计算从`n`个不同元素中选择`m`个进行排列的组合总数(排列问题)。用户输入`n`和`m`,程序通过循环和条件判断生成所有可能的排列,并输出排列的总数。核心逻辑是使用回溯法,当找到一个满足条件(不包含重复元素)的排列时,更新计数器并继续寻找下一个排列。

#include<bits/stdc++.h>

using namespace std;

int main(){

int n,m,i=1,g=1,rankNumber=0;//从n个里面选m个排列

int a[100];

cout<<"A(n,m)输入n,m(n>m):";

cin>>n>>m;

a[i]=1;

while(1)

{

 g=1;//默认满足条件  

 for(int j=i-1;j>=1;j--){//循环遍历判断和选出来的元素有没有重复的  

  if(a[i]==a[j])

  {

   g=0;//如果有重复的元素,改为不满足条件  

   break;

  }

 }

 if(g&&i==m)//如果满足条件,且选出了所有要选元素  

 {

  rankNumber++;//记录有多少种情况  

  for(int j=1;j<=m;j++)//循环遍历输出选出的元素  

  {

   cout<<a[j]<<" ";

  }

  cout<<endl;

 }

 if(g&&i<m)//如果满足条件,且未选所有要选的的元素  

 {

  i++;//继续选择下一个元素  

  a[i]=1;//下一个元素从1开始  

  continue;

 }

 while(i>1&&a[i]==n)i--;//如果当前元素已经达到最大值,无法继续选出下一个元素,向前回溯  

 if(i==1&&a[i]==n)//第一个元素到达最大值,且无法选出下一个元素  

 {

  break;

 }

 else

 {

  a[i]+=1;//使当前元素+1作为下一种排列  

 }

 

}

cout<<"A("<<n<<","<<m<<"):"<<rankNumber;  

return 0;

}  

//伯努利装错信封问题需要在选择条件中使a[]数组对应位置的i的值不等于i  

目录
相关文章
|
图计算
综合评价法与权重方法汇总
综合评价法与权重方法汇总
|
Android开发
APP脱壳之-定义属于自己的专属应用
APP脱壳之-定义属于自己的专属应用
|
5月前
|
机器学习/深度学习 人工智能 监控
智能的三重境界:从感知、认知到决策的进化
智能的三重境界:从感知、认知到决策的进化
807 121
|
10月前
|
人工智能 数据可视化 BI
HR必看!用工成本计算居然藏着这些猫腻?手把手教你算准每分钱
用工成本计算远比想象中复杂,隐藏的猫腻让90%的HR新手踩坑。本文从实际案例出发,解析用工成本构成,包括基础项、隐藏项及隐性支出,并揭示三大常见计算雷区。同时,推荐智能系统助力精准核算,通过数字化工具实现成本管控优化,如薪酬结构调整、弹性福利积分制等方法,为企业降本增效。未来,借助先进技术,用工成本管理将更加科学高效。
569 12
|
JSON C++ 数据格式
【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容
【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容
327 3
|
存储 缓存 Java
写代码原来如此简单:两种常用代码范式
一次项目包含非常多的流程,有需求拆解,业务建模,项目管理,风险识别,代码模块设计等等,如果我们在每次项目中,都将精力大量放在这些过程的思考上面,那我们剩余的,放在业务上思考的精力和时间就会大大减少;这也是为什么我们要 总结经验/方法论/范式 的原因;这篇文章旨在建立代码模块设计上的思路,给出了两种非常常用的设计范式,减少未来在这一块的精力开销。
287 11
|
安全 Java 编译器
HashMap, HashTable, ConcurrentHashMap 之间的区别
HashMap, HashTable, ConcurrentHashMap 之间的区别
360 0
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
2356 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境