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;
    }



    只有自己可以帮助自己
  • 相关阅读:
    xBIM 基本的模型操作
    xBIM 应用与学习 (二)
    xBIM 应用与学习 (一)
    ABP WebApi 加载错误
    ABP 数据迁移
    AutoDesk Forge 获取令牌认证
    IIS 加载 JSON 错误 404 解决办法
    ASP.NET MVC 5 ABP DataTables (二)
    ASP.NET MVC 5 ABP DataTables (一)
    Windows10卡顿,磁盘 内存占用100%或比较多
  • 原文地址:https://www.cnblogs.com/lemonhanyu/p/5304665.html
Copyright © 2011-2022 走看看