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



    只有自己可以帮助自己
  • 相关阅读:
    备忘录方法与动态规划比较
    struct大小
    位域
    cocos2d-x获得系统的语言
    游戏中的心理学:利用归因错误让玩家更爱你的游戏
    武侠游戏核心追求点
    将“Cocos2dx-截屏并设置图片尺寸 ”中cocos2d-x代码转换为2.2的代码
    Cocos2dx-截屏并设置图片尺寸
    信息图:iOS 7开发者需要知道的事
    批处理学习 二
  • 原文地址:https://www.cnblogs.com/lemonhanyu/p/5304665.html
Copyright © 2011-2022 走看看