zoukankan      html  css  js  c++  java
  • 蓝桥杯--算法提高 排列数 (简单dfs)

    算法提高 排列数  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      0、1、2三个数字的全排列有六种,按照字母序排列如下:
      012、021、102、120、201、210
      输入一个数n
      求0~9十个数的全排列中的第n个(第1个为0123456789)。
    输入格式
      一行,包含一个整数n
    输出格式
      一行,包含一组10个数字的全排列
    样例输入
    1
    样例输出
    0123456789
    数据规模和约定

      0 < n <= 10!


    #include<cstdio>
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int n;
    int vis[20],num[20];
    void bfs(int p,int s)
    {
    	if(p==10)
    	{
    		n--;
    		if(n==0)
    		{
    			for(int i=0;i<=9;i++)
    			cout<<num[i];
    			cout<<endl;
    		}
    		return ;
    	}
    	for(int i=0;i<=9;i++)
    	{
    		if(!vis[i])
    		{
    			num[p]=i;
    			vis[i]=1;
    			bfs(p+1,i+1);
    			vis[i]=0;
    		}
    	}
    }
    int main()
    {
    	while(cin>>n)
    	{
    		memset(vis,0,sizeof(vis));
    		memset(num,0,sizeof(num));
    		bfs(0,0);
    	}
    }


  • 相关阅读:
    NXOpen 创建方体block代码
    Mysql---2 DDL DML DQL DCL
    Mysql数据库--1数据库操作
    FFmpeg
    Servlet Web
    Java web Springboot
    Java 网络
    Java 注解 反射
    Java 线程状态
    Java Lambda
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273536.html
Copyright © 2011-2022 走看看