int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };我定义了如上的二维数组。我要找到这些数。int[] a01=new int[]{2,9};
int[] a04=new int[]{1,7,9};
..
int[] a10=new int[]{1,2,4,5,7};
..
即列行循环,若值为0,就以座标形式定义变量,找出横竖不在1到9中的数字组成数组,全部找出来。怎么写程序??
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };我定义了如上的二维数组。我要找到这些数。int[] a01=new int[]{2,9};
int[] a04=new int[]{1,7,9};
..
int[] a10=new int[]{1,2,4,5,7};
..
即列行循环,若值为0,就以座标形式定义变量,找出横竖不在1到9中的数字组成数组,全部找出来。怎么写程序??
string result=string.Empty;
foreach(int[] arr in array)
foreach(int n in arr)
{
if(n>0) result+=n+" ";
}
先从第一行循环,发现array[0][1]=0,这里行有 (3568)竖有(7641),在1到9中只是(2,9)没包涵在其中。 所以找到a01="2,9";
{
string result=string.Empty;
int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
for(int i=0;i<array.Length;i++)
{
for(int j=0;j<array[i].Length;j++)
{
if(array[i][j]==0) result+=GetResult(i,j)+"\r\n";
}
}
this.textBox2.Text=result; }
private string GetResult(int row,int colume)
{
ArrayList list=new ArrayList(new int[]{1,2,3,4,5,6,7,8,9});
string result=string.Empty;
int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
for(int i=0;i<array[row].Length;i++)
{
int temp=array[row][i];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
for(int i=0;i<array.Length;i++)
{
int temp=array[i][colume];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
foreach(int n in list)
{
result+=n+" ";
}
return "a"+row+colume+"="+result.Trim();
}
运行结果:
a01=2 9
a04=1 7 9
a05=2 4 9
a06=1 4 7 9
a08=1 2 7
a10=1 2 4 5 7
a11=2 3 5 9
a13=1 2 3 4 7
a14=1 3 5 7 9
a15=2 3 4 9
a17=1 2 4 9
a18=1 2 3 5 7
a20=2 4 6 8
a22=2 3 4 6 9
a23=2 3 4 8
a24=3 6 8 9
a26=4 8 9
a28=2 3 6 8
a32=1 3 4
a33=1 3 4 7 8
a35=3 4 8
a36=1 4 5 7 8
a37=1 4
a38=1 3 5 7 8
a40=1 2 4 6 7 8
a41=2 3 8
a42=1 2 3 4 6
a44=1 3 6 7 8
a46=1 4 7 8
a47=1 2 4 6
a48=1 2 3 6 7 8
a50=1 2 5 6 7 8
a51=2 5 8
a52=1 2 6
a53=1 2 7 8
a55=2 6 8
a56=1 5 7 8
a60=1 2 6 8
a62=1 2 3 6 9
a64=1 3 6 8 9
a65=2 3 6 8 9
a66=1 8 9
a68=1 2 3 6 8
a70=1 4 5 6 8
a71=3 5 8 9
a73=1 3 4 8
a74=1 3 5 6 8 9
a75=3 4 6 8 9
a77=1 4 6 9
a78=1 3 5 6 8
a80=2 5 6 8
a82=2 6 9
a83=2 8
a84=5 6 8 9
a87=2 6 9
private void button1_Click(object sender, System.EventArgs e)
{
string result=string.Empty;
int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
for(int i=0;i<array.Length;i++)
{
for(int j=0;j<array[i].Length;j++)
{
if(array[i][j]==0) result+=GetResult(i,j,array)+"\r\n";
}
}
this.textBox2.Text=result; }
private string GetResult(int row,int colume,int[][] array)
{
ArrayList list=new ArrayList(new int[]{1,2,3,4,5,6,7,8,9});
string result=string.Empty;
for(int i=0;i<array[row].Length;i++)
{
int temp=array[row][i];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
for(int i=0;i<array.Length;i++)
{
if(array[i].Length<=colume) continue;
int temp=array[i][colume];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
foreach(int n in list)
{
result+=n+" ";
}
return "a"+row+colume+"="+result.Trim();
}
{
for (int j = 0; j < array[i].Length; j++)
{
if (array[i][j] == 0) result = GetResult(i, j, array);
list1.Add(result);
}
}为什么有81行数据?
{
string result=string.Empty;
int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
for(int i=0;i<array.Length;i++)
{
for(int j=0;j<array[i].Length;j++)
{
if(array[i][j]==0) result+=GetResult(i,j)+"\r\n";
}
}
this.textBox2.Text=result; }
private string GetResult(int row,int colume)
{
ArrayList list=new ArrayList(new int[]{1,2,3,4,5,6,7,8,9});
string result=string.Empty;
int[][] array = new int[9][]; array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 }; array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 }; array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
for(int i=0;i<array[row].Length;i++)
{
int temp=array[row][i];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
for(int i=0;i<array.Length;i++)
{
int temp=array[i][colume];
if(temp>0&&list.Contains(temp)) list.Remove(temp);
}
foreach(int n in list)
{
result+=n+" ";
}
return "a"+row+colume+"="+result.Trim();
}
把重复的数据删除怎么删?为什么我的删不干净? list1.Remove("");
for(int m=0;m<list1.Count;m++)
for(int n=m+1;n<list1.Count;n++)
if(list1[n]==list1[m])
{
string tmp=list1[n].ToString();
list1.Remove(tmp);
}
{
for (int j = 0; j < array[i].Length; j++)
{
if (array[i][j] == 0)
{
result = GetResult(i, j, array);
list1.Add(result);
}
}
}知道你的意思了。。这样就不会81行了。。
你的数组好麻烦。
建议用二维数组,再利用2个 for循环,就能得出每一个值。
{
int[][] array = new int[9][];
public ArrayInfo()
{
array[0] = new int[] { 3, 0, 5, 6, 0, 0, 0, 8, 0 };
array[1] = new int[] { 0, 0, 8, 0, 0, 0, 6, 0, 0 };
array[2] = new int[] { 0, 7, 0, 0, 0, 1, 0, 5, 0 };
array[3] = new int[] { 9, 6, 0, 0, 2, 0, 0, 0, 0 };
array[4] = new int[] { 0, 0, 0, 9, 0, 5, 0, 0, 0 };
array[5] = new int[] { 0, 0, 0, 0, 4, 0, 0, 3, 9 };
array[6] = new int[] { 0, 4, 0, 5, 0, 0, 0, 7, 0 };
array[7] = new int[] { 0, 0, 7, 0, 0, 0, 2, 0, 0 };
array[8] = new int[] { 0, 1, 0, 0, 0, 7, 3, 0, 4 };
} public Dictionary<string, int[]> Get()
{
Dictionary<string, int[]> list = new Dictionary<string, int[]>();
for (int i = 0; i < array.Length; i++)
{
for (int j = 0; j < array[i].Length; j++)
{
if (array[i][j] == 0)
{
string position = "a" + i.ToString() + j.ToString();
int[] a = GetNotInArray(array[i], GetColumn(j));
list.Add(position,a);
}
}
}
return list;
} public int[] GetColumn(int column)
{
ArrayList list = new ArrayList();
for (int i = 0; i < array.Length; i++)
{
list.Add(array[i][column]);
}
return (int[])list.ToArray(typeof(int));
} public int[] GetNotInArray(int[] A, int[] B)
{
ArrayList returnList = new ArrayList();
ArrayList list = new ArrayList(); for(int i =0;i<A.Length;i++)
{
if (A[i] != 0 && !list.Contains(A[i]))
{
list.Add(A[i]);
}
} for(int j =0;j<B.Length;j++)
{
if (B[j] != 0 && !list.Contains(B[j]))
{
list.Add(B[j]);
}
} for (int k = 1; k <= 9; k++)
{
if (!list.Contains(k))
{
returnList.Add(k);
}
} return (int[])returnList.ToArray(typeof(int));
}
}