这是一个经典的全排列算法问题 我把算法写在下边 是C#的
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Pailie
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
string s = "abcd";//用于计算全排列的输入字符串
char[] add = s.ToCharArray();
pai(ref add, 0, s.Length);
}
//递归算法
// str:输入的字符串toChar结果
//m :重排列的起始位置。全排列起始位置为0
//n: 排列长度 全排列起始位置为字符串长度
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
{
Console.WriteLine(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;
}
}
}
写个算法不容易。多少加点分吧
温馨提示:内容为网友见解,仅供参考