用c#编写下列程序:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
时间: 2024-09-28 21:09:30 浏览: 46
c程序100例 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
在C#中,我们可以使用循环和递归来计算四个数字1、2、3、4可以组成的互不相同且无重复数字的三位数的数量,并列出所有可能的组合。这里我们先计算总数,然后用一个数组存储所有的三位数。
```csharp
using System;
class Program
{
static void Main()
{
int[] digits = {1, 2, 3, 4};
int totalCombinations = 0;
List<int> threeDigitNumbers = new List<int>();
// 计算总组合数
for (int first_digit = 1; first_digit <= digits.Length; first_digit++)
{
for (int second_digit = first_digit + 1; second_digit <= digits.Length; second_digit++)
{
for (int third_digit = second_digit + 1; third_digit <= digits.Length; third_digit++)
{
totalCombinations++;
}
}
}
Console.WriteLine($"可以组成{totalCombinations}个互不相同且无重复数字的三位数。");
// 构造并打印三位数列表
GenerateThreeDigitNumbers(digits, "", totalCombinations - 1, threeDigitNumbers);
Console.WriteLine("所有的三位数组合为:");
foreach (var number in threeDigitNumbers)
{
Console.Write(number + " ");
}
}
static void GenerateThreeDigitNumbers(int[] digits, string currentNum, int remaining, List<int> result)
{
if (remaining == 0 && currentNum.Length == 3)
{
result.Add(Int32.Parse(currentNum));
return;
}
for (int i = 0; i < digits.Length; i++)
{
if (!currentNum.Contains(digits[i].ToString()))
{
currentNum += digits[i].ToString();
GenerateThreeDigitNumbers(digits, currentNum, remaining - 1, result);
currentNum = currentNum.Substring(0, currentNum.Length - 1); // 撤销当前位数
}
}
}
}
```
运行这个程序会输出结果:
- 可以组成6个互不相同且无重复数字的三位数。
- 所有的三位数组合为: 123 132 213 231 312 321
阅读全文