排列<一>

时间:2021-05-14 13:36:19

理论和习题来源于书本,有些能用计算机模拟的题尽量用代码来解。

1.5个球放在3个不同的盒子里面,允许有盒子不放球,求有多少种可能?
解:穷举,设盒子A,B,C,每个盒子都有0~5个球的可能,但是三个盒子相加必定为5,得到代码:

for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
if(i+j+k==)
cout<<i<<j<<k<<endl;

2.从n个不同元素中,任取m个(n>=m)不同元素,把这个m个元素有顺序地安排在一个单球上,我们叫从n个不同元素取出m个元素的无重复环排列,且环排列数为:
排列<一>3.书看了一大半,突然想到本源问题,计算机如何模拟排列呢?比如说,排列1,2,3这三个数字,并打印它的所有可能。纸上计算是容易的,6种可能,可是计算机如何执行呢?
设想三个有序的盒子,A,B,C,一字排开,1,2,3做为元素可以放在三个盒子里面,显然是不能重复的。假如盒A放了1,那么盒B只能放2或3,假如盒B放了2,那盒C只能放3,关键的是,三个盒子都有三种可能!现在用for循环的原始办法:

    for(int i=;i<=;i++)/*盒子A*/
for(int j=;j<=;j++)/*盒子B*/
{
if(i==j)/*不能相同于盒子A*/
continue;
else
{
for(int k=;k<=;k++)/*盒子C*/
{
if(k==i || k==j)/*不能相同于盒子A或B*/
continue;
else /*此处可继续嵌套*/
cout<<i<<j<<k<<endl;
}
}
}

如果有四个元素,可以在内部再嵌套。整个代码有规律的像锥子一般向右边延伸...这里采用的思路是逐个安置,先安排A,再安排B,再安排C....以此类推...虽然深度搜索也能解决,但显然,这个思路更简单和容易理解!
4.排列的改进:

/*三个数的排列,改进*/
#include <iostream>
using namespace std;
int a[];
int b[]={,,};
int main()
{
for(int i=;i<;i++)/*盒子A*/
{
a[]=b[i];
for(int j=;j<;j++)/*盒子B*/
{
if(a[]==b[j])/*不能相同于盒子A*/
continue;
else
{
a[]=b[j];
for(int k=;k<;k++)/*盒子C*/
{
if(a[]==b[k] || a[]==b[k])/*不能相同于盒子A或B*/
continue;
else /*此处可继续嵌套*/
{
a[]=b[k];
for(int g=;g<;g++)/*得到一组排列*/
cout<<a[g]<<" ";
cout<<endl;
}
}
}
}
}
return ;
}

5.

  

排列<一>的更多相关文章

  1. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  2. &lbrack;LeetCode&rsqb; Arranging Coins 排列硬币

    You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...

  3. &lbrack;LeetCode&rsqb; Next Permutation 下一个排列

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  4. js学习篇--数组按升序降序排列

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. SDOI 2016 排列计数

    题目大意:一个数列A,n个元素,其中m个元素不动,其他元素均不在相应位置,问有多少种排列 保证m个元素不动,组合数学直接计算,剩余元素错位排列一下即可 #include<bits/stdc++. ...

  6. 排列组合算法的javascript实现

    命题:从成员数为N的集合S中,选出M个元素,分别求其排列与组合结果集,即 A(N, M)与C(N, M) js解法: function queue(arr, size){ if(size > a ...

  7. 剑指Offer面试题:26&period;字符串的排列

    一.题目:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. 二 ...

  8. &period;NET平台开源项目速览&lpar;11&rpar;KwCombinatorics排列组合使用案例&lpar;1&rpar;

    今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...

  9. 【原创】开源&period;NET排列组合组件KwCombinatorics使用&lpar;三&rpar;——笛卡尔积组合

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  10. 【原创】开源&period;NET排列组合组件KwCombinatorics使用&lpar;二&rpar;——排列生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

随机推荐

  1. 性能调优利器之strace

    最近需要对一个自己开发的socket server的性能进行分析,刚开始还想了好长时间怎么来分析.后来才意识到其实使用strace就足够了. 观察到的现象是server单进程CPU使用率97,但磁盘i ...

  2. Xcode7以后 使用空模板

    Xcode7以后的版本没有空模板可以选择 习惯使用空模版的 可以自己拷贝空模版文件夹 放到模版的位置 重启就可以使用了 1:首先 需要有一个空模版 没有空模板的可以在下面路径下下载一个 并解压 htt ...

  3. CodeForces 607C &lpar;DP&rpar; Hard problem

    题目:这里 题意:给定n个字符串,每个字符串可以进行一项操作,就是将这个字符串交换,就是该字符串的第一个和最后一个交换,第二个和倒数第二个交换,以此类推,当然可以选择对于 该字符串进行或不进行这项操作 ...

  4. postgresql 关闭自动提交

    1. 简介说明             我们知道oracle中sqlplus里面执行dml语句:是需要提交commit:若错了:也可以回滚rollback: 然而在postgresql里面默认是自动提 ...

  5. 可在Azure上运行&period;NET的SDK

    本节包含前几个版本的 for .NET 的发行说明.有关早期版本的详细信息,请参阅早期版本:Azure SDK for .NET.有关 SDK 支持和停用的信息,请参阅 Azure SDK for . ...

  6. Android开发:Handler Runnable和Thread之间的区别和联系 应用--------------------看完本篇,从此一览无余!

    http://blog.csdn.net/yanzi1225627/article/details/8582081 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnab ...

  7. c宏的MAX函数

    今天从香山上面回来累的跟傻逼一样,回来问了一下*的阿里面试的问题.然后其中有一个是宏写max函数.*说不好写,然后我就去洗澡了. 洗澡的时候感觉不对啊,回来写了一个: #define MAX(a, ...

  8. leetcode&lbrack;55&rsqb; Merge Intervals

    题目:给定一连串的区间,要求输出不重叠的区间. Given a collection of intervals, merge all overlapping intervals. For exampl ...

  9. 5款新颖的ReSharper插件

    ReSharper是著名的代码生成工具.自ReSharper 8.0版本发布以来,新的扩展管理器.模板设置.分发安装等功能改革使得对插件的要求变高.接下来小编整理了5款新颖插件. JetBox 当开发 ...

  10. zookeeper 应用场景概述

    Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理. 一 .配置管理 在我们的应用中除了代码外,还有一些就是各种配置.比如数据库连接,远程服务访问地址等.一般我们都是 ...