本帖最后由 飞、 于 2013-10-21 13:10 编辑
static void Main(string[] args)
{
int[] num = { 1, 2, 3, 4 };//一个int类型的数组,存有1,2,3,4 四个元素。
Console.WriteLine("1,2,3,4这四个数一共可以组成 {0} 个互相不重复的3位数", 1 * 2 * 3 * 4); //因为是4个数,所以可以组成1*2*3*4个不重复的3位数
Quanpai(num); //将数组传入方法中
Console.ReadKey();
}
public static void Quanpai(int[] num)
{
int[] arr = { 0, 0, 0 ,0}; //申明一个int[]数组 arr,我用这个数组的元素来表示原数组的下标
while (true)
{
arr[0] += 1; //对arr数组的第一个元素加1操作
if (arr[0] == arr.Length) //如果arr[0]的值加到了数组的长度
{
arr[1] += 1; //就对第2个元素加1,
arr[0] = 0; //第一个元素清0.
}
if (arr[1] == arr.Length)
{
arr[2] += 1;
arr[1] = 0; //同上一样,第二个元素达到了数组长度就对第3个元素加1,第2个元素清0.
}
if (arr[2] == arr.Length)
{
arr[3] += 1;
arr[2] = 0;
}
if (arr[3] == arr.Length) //如果第3个元素的值加到了数组的长度,后面没有再加的元素了。程序退出
return;
//如果四个元素的的值都不相等,那就得到了一组不重复的下标,我们就输出这组数据!
if (arr[0] != arr[1]&&arr[0]!=arr[2]&&arr[0]!=arr[3]&&arr[1]!=arr[2]&&arr[1]!=arr[3]&&arr[2]!=arr[3])
{
for (int i = 0; i < num.Length-1; i++) //因为只要组成3位数,所以num.Length要减去1;
{
Console.Write("{0} ",num[arr] );//arr表示的是当前不重复的下标。
}
Console.WriteLine();
上面是我能想到的方法,有没有更直观易懂的方法,请带上代码和注释(新人,请莫用太深奥的东东) |