注册 登录
编程论坛 C# 论坛

C# 从给定的二维数组中怎么存储指定的元素?

gxlove 发布于 2014-06-23 15:57, 574 次点击
int[,] path ={
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
     (A){ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
        { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
        { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
        { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
        { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
        { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
        { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},(B)
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
以上是一个二维数组,用C#语言从path数组中按顺序得到元素值为1的各项下标,然后按顺序存到List中。说白了就是得到元素值为1的路径,有两条路径A到B,和B到A。得到两条路径的方法应该都一样吧。请写一下代码,谢谢!
2 回复
#2
wjshan08082014-06-23 17:46
是这样的吧?
程序代码:
       int[,] path ={
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
     /*(A)*/{ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
            { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
            { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
            { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
            { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
            { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},//(B)
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
            List<string> arrayPath = new List<string>(30);
            //A to B
            for (int i = 1; i < path.GetLength(0) - 2; i++)
            {
                for (int j = 0; j < path.GetLength(1); j++)
                {
                    if (path[i, j] == 1)
                    {
                        arrayPath.Add(i + "," + j);
                    }
                }
            }
            foreach (string item in arrayPath)
            {
                Console.WriteLine(item);
            }
            arrayPath.Clear();
            //B to A
            for (int i = path.GetLength(0) - 2; i > 1; i--)
            {
                for (int j = path.GetLength(1) - 1; j >= 0; j--)
                {
                    if (path[i, j] == 1)
                    {
                        arrayPath.Add(i + "," + j);
                    }
                }
            }
            foreach (string item in arrayPath)
            {
                Console.WriteLine(item);
            }
#3
gxlove2014-06-23 20:26
回复 2 楼 wjshan0808
谢谢你的回复!你这个不对哦,只是把值为1的所有元素取出来而已(这个很容易),要实现的是从A至B点根据路径取元素,比如:(1,0),(1,1),(1,2),(2,2),(3,2),(4,2),(5,2),(5,3)...path二维数组去掉0元素就成如下图形路径走向。
只有本站会员才能查看附件,请 登录


[ 本帖最后由 gxlove 于 2014-6-23 20:27 编辑 ]
1