首页 > 代码库 > n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列
n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace One_two {
/* * 2、编写一个控制台应用程序,要求完成下列功能。
* 接收一个整数n。
* 如果接收的值n为正数,输出1到n间的全部整数。
* 如果接收的值为0或负值,用break或者return退出程序。
* 转到第一步继续接收下一个整数。
* */
class Program
{
private static string[] strLen = new string[24];
private static int t = 0;
static void Main()
{
string s = "1234";
char[] add = s.ToCharArray();
pai(ref add, 0, s.Length);
int[] tt = new int[24];
int x = 0;
foreach (string ttt in strLen)
{
tt[x++] =Convert.ToInt16(ttt);
}
for (int i = 0; i < 24; i++)
{
for (int j = i+1; j < 24; j++)
{
if (tt[i] > tt[j])
{
int temp = tt[i];
tt[i] = tt[j];
tt[j] = temp;
}
}
}
foreach (int c in tt)
{
Console.WriteLine(c);
}
Console.ReadLine();
}
//递归
private static void pai(ref char[] str, int m, int n)
{
if (m < n)
{
for (int i = 0; i <= m; i++)
{
pai(ref str, m + 1, n);
chang(ref str, m);
}
}
else
{
strLen[t++] = new string(str);
}
}
//移位
private static void chang(ref char[] str, int m)
{
char temp = str[0];
for (int i = 0; i < m; i++)
{
str[i] = str[i + 1];
}
str[m] = temp;
}
}
}
n个数字的不同排列有n!个,要求将这些排列组成的数,按从小到大的顺序进行排列