从 n 个元素中取 n 个元素组成互不相同并且不重复的 n 位数 输入 n 个数字,并显示出能组成的所有互不相同的、不重复的 n 位数。(如输入 1、2、3 三个数字,则输出为 123,132,213,231,312,321 等六组答案;如输入 1、1、1、2 三个数 字,则输出为:1112,1121,1211,2111 等四组答案) 要用 c# 怎么 n 位不重复呢
1
mitong3269 OP int n1, n2, n3, n4;
{ Console.WriteLine("请输入数字"); Console.Write("n1="); n1 = Convert.ToInt16(Console.ReadLine()); Console.Write("n2="); n2 = Convert.ToInt16(Console.ReadLine()); Console.Write("n3="); n3 = Convert.ToInt16(Console.ReadLine()); Console.Write("n4="); n4 = Convert.ToInt16(Console.ReadLine()); if (n1!=n2&&n2!=n3&&n3!=n4) ; //Console.Write("n1,n2,n3,n4"(n1,n2,n3,n4)); } 我写了个 4 位数的也不行 |
2
crella 2019-12-22 22:51:50 +08:00 via Android
提个思路
首先新建 id 数组为 1, 2, 3....元素的个数 然后算 id 的全排列,再给这个全排列去掉重复项。 |
3
crella 2019-12-22 22:53:27 +08:00 via Android
算完 id 的全排列后,按照每个排列中的每个 id 对应的字符,新建一个字符串,得到一个包含很多字符串的数组。最后去掉这个数组里面的重复的字符串。
|
4
mitong3269 OP @crella 谢谢
|