【发布时间】:2021-01-01 14:35:32
【问题描述】:
我的代码在这里列出了一个字符串的所有排列
{
public partial class Form1 : Form
{
private int n;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
string scrambledWord = textBox1.Text;
if (e.KeyCode == Keys.Enter)
{
label4.Text = "";
char[] arr = scrambledWord.ToCharArray();
GetPer(arr);
}
}
public void GetPer(char[] list)
{
int x = list.Length - 1;
GetPer(list, 0, x);
}
private void GetPer(char[] list, int k, int m)
{
if (k == m)
{
Console.WriteLine(list);
var text = new string(list);
label4.Text = label4.Text + text + Environment.NewLine;
}
else
for (int i = k; i <= m; i++)
{
Swap(ref list[k], ref list[i]);
GetPer(list, k + 1, m);
Swap(ref list[k], ref list[i]);
}
}
private void Swap(ref char a, ref char b)
{
if (a == b) return;
var temp = a;
a = b;
b = temp;
}
private void label1_TextChanged(object sender, EventArgs e)
{
label4.Height = label4.Height + 10;
}
}
}
有谁知道如何检查任何排列是否是英文单词并且代码在 Visual Studio 上打印英文单词?谢谢你
【问题讨论】:
-
这能回答你的问题吗? How to get english language word database?
-
我会使用DAWG 来表示所有单词。通过这种方式,您可以停止不会产生任何有效单词的排列,从而可能防止生成数千或数百万个垃圾词。例如,你能想到任何以“gz”开头的词吗?
标签: c# visual-studio winforms permutation