|
Post by huangno1 on Feb 26, 2017 20:30:16 GMT -8
程式說明
使用者會輸入一個整數值 n, 1 <= n <= 10^9。請輸出由該值的所有數字排列出來的最小整數值。數字中若有0,請忽略之。
請撰寫一個函式 SmallestPermutation(),其有一個整數參數 n,並回傳由 n 的數字所排列出來的最小整數值。
#include <stdio.h>
void Swap ( int* array , int x , int y )
{
int temp = array [ x ] ;
array [ x ] = array [ y ] ;
array [ y ] = temp ;
}
void BubbleSort ( int* array , int size )
{
for ( int i = 0 ; i < size ; i++ )
{
for ( int j = 1 ; j < size - i ; j++ )
{
if ( array [ j ] > array [ j - 1 ] )
{
Swap ( array , j , j - 1 ) ;
}
}
}
}
int SmallestPermutation ( int n )
{
int x [ 10 ] = { } , i , j ;
int size = 0 , sum = 0 , t ;
while ( n > 0 )
{
if ( !( n % 10 ) )
n /= 10 ;
else
{
x [ size ] = n % 10 ;
n = ( n - x [ size ] ) / 10 ;
size ++ ;
}
}
BubbleSort ( x , size ) ;
for ( i = 0 ; i < size ; i ++)
{
t = 1 ; for ( j = 0 ; j < i ; j ++)
{
t *= 10 ;
}
sum += x [ i ] * t ;
}
return sum ;
}
int main()
{
int n=0;
scanf("%d", &n);
printf("%d\n", SmallestPermutation(n));
}
|
|