zoukankan      html  css  js  c++  java
  • 寻找全排列的下一个数

    前言

    题目:

    给出一个正整数,找出这个正整数所以数字全排列的下一个数。
    比如说12345.返回 12354.

    12354 返回 12435

    自己的解答

    class Program
    {
    	public static int[] GetArrays(int num)
    	{
    		string len = num.ToString();
    		int[] intarr = new int[len.Length];
    		int index = 0;
    		while (num != 0)
    		{
    		   int yu=num % 10;
    			intarr[index] = yu;
    			index++;
    			num = num / 10;
    		}
    		return intarr;
    	}
    
    	public static int getMaxInt(int[] intarr)
    	{
    		var sortIndex = 0;
    		var temp = 0;
    		for (int i = 1; i < intarr.Length; i++)
    		{
    			if (intarr[i] < intarr[0])
    			{
    				sortIndex = i - 1;
    				temp = intarr[0];
    				intarr[0] = intarr[i];
    				intarr[i] = temp;
    				break;
    			}
    		}
    
    		var hasSore = true;
    		if (sortIndex - 1 >= 0)
    		{
    			for (int i = 0; i < sortIndex ; i++)
    			{
    				for (int j = 0; j < sortIndex- i; j++)
    				{
    					if (intarr[j] < intarr[j + 1])
    					{
    						temp = intarr[j + 1];
    						intarr[j + 1] = intarr[j];
    						intarr[j] = temp;
    						hasSore = false;
    					}
    					if (hasSore)
    					{
    						break;
    					}
    				}
    			}
    		}
    		int result = 0;
    		for (int i = 0; i < intarr.Length; i++)
    		{
    			var tempdouble = Convert.ToDouble(i);
    			result += Convert.ToInt32(intarr[i] * Math.Pow(10.0, tempdouble));
    		}
    		return result;
    	}
    	static void Main(string[] args)
    	{
    		Console.WriteLine(getMaxInt(GetArrays(12354)));
    		Console.ReadKey();
    	}
    }
    
  • 相关阅读:
    系统测试的策略
    POJ1611(并查集)
    POJ2752(KMP)
    POJ3176(DP)
    HDU2579(BFS)
    HDOJ1175(BFS)
    HDOJ1242(BFS)
    HDOJ1180(BFS)
    HDOJ1372(BFS)
    HDOJ2717(BFS)
  • 原文地址:https://www.cnblogs.com/aoximin/p/12533240.html
Copyright © 2011-2022 走看看