zoukankan      html  css  js  c++  java
  • 枚举排列

    今天我们来学习一些轻松的东西,全排列,这个东西应该还是非常的基础的,所以这里我们就不用再对他多做太多解释了,这里直接上一道题和一个标程,大家练习一下其实就可以了。

    题目传送门:P1706 全排列问题

    标程如下:

    #include<bits/stdc++.h>
    using namespace std;
    bool x[12];
    int xx[13];
    int n;
    void p_search(int a)
    {
    	if(a==n+1)
    	{
    		for(int i=1;i<=n;++i)
    		{
    			printf("%5d",xx[i]);
    		}
    		printf("
    ");
    		return;
    	}
    	for(int i=1;i<=n;++i)
    	{
    		if(!x[i])
    		{
    			xx[a]=i;
    			x[i]=true;
    			p_search(a+1);
    			x[i]=false;
    		}
    	}
    }
    int main()
    {
    	cin>>n;
    	p_search(1);
    }
    

    如果我们把这道题改一下,我们从n个数中选取m个数,然后并且保证他们都不一样,那么我们只需要把递归边界改一下,然后在改一下下面循环部分的内容就可以了

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    bool x[12];
    int xx[13];
    int n,m;
    void p_search(int a,int b,int m)
    {
    	if(a==m+1)
    	{
    		for(int i=1;i<a;++i)
    		{
    			printf("%5d",xx[i]);
    		}
    		printf("
    ");
    		return;
    	}
    	for(int i=b;i<=n;++i)
    	{
    		if(!x[i])
    		{
    			xx[a]=i;
    			x[i]=true;
    			p_search(a+1,i+1,m);
    			x[i]=false;
    		}
    	}
    }
    int main()
    {
    	cin>>n>>m;
    	p_search(1,1,m);
    }
    

    谢谢采纳!

  • 相关阅读:
    格式化你的git message
    git merge
    Git远程操作详解
    Limit
    EmailService
    RequestContextHolder getHttpServletRequest
    spring boot GlobalExceptionHandler @RestControllerAdvice @ExceptionHandler
    redis 的雪崩和穿透?
    FileUtil
    getWeekDay TimeUtil
  • 原文地址:https://www.cnblogs.com/mudrobot/p/13330817.html
Copyright © 2011-2022 走看看