zoukankan      html  css  js  c++  java
  • 排列

    给定一个正整数n,1,2,...,n的全排列有n!种,按字典序从小到大,对于任意一个排列,给出它的下一个排列。如n=3,123的下一个排列为132。

    代码:

    #include<stdio.h>
    #include<iostream>
    using namespace std;

    int n;

    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            int a, b, i, j, k;
            char num[12];
            scanf("%s",num);
            int tmp[12];
            j=0;
            for(i=n-1; i>0; --i)
            {
                a = num[i] - '0';
                b = num[i-1] - '0';
                if(a<b)
                    tmp[j++] = num[i]-'0';
                else
                    break;
            }
            tmp[j]=num[i]-'0';
            int max = tmp[j];
            int id=j;
            for(k=j-1; k>=0; --k)
            {
                if(tmp[k]>num[i-1]-'0')
                {
                    if(tmp[k]<max)
                        max = tmp[k], id = k;
                }
                else
                    break;
            }
            tmp[id] = num[i-1]-'0';
            num[i-1] = max+'0';
            for( k=0; k<=j; ++k)
                num[i++] = tmp[k]+'0';
            for(i=0; i<n; i++)
                printf("%c",num[i]);
            printf(" ");
        }
        return 0;
    }



    只有自己可以帮助自己
  • 相关阅读:
    2021-07-12 部分集训题目题解
    2021-07-09/11 部分集训题目题解
    k8s删除Terminating状态的命名空间
    yum命令安装jenkins
    Jenkins构建docker镜像
    jenkins获取当前构建任务的构建人
    Kubernetes kubeconfig配置文件
    K8S中使用gfs当存储
    人类视觉系统对颜色和亮度的感知
    荧光的应用之全内反射荧光显微镜(TIRFM)
  • 原文地址:https://www.cnblogs.com/lemonhanyu/p/5304665.html
Copyright © 2011-2022 走看看