回 帖 发 新 帖 刷新版面

主题:[讨论]大家来看下如何读取这个文件

100
1 3
19 18 2
2 3
18 3 1
3 5
25 23 18 10 2
4 2
56 7
5 4
16 9 6 28
6 3
28 8 5
7 3
17 8 4
8 5
21 20 17 7 6
9 4
24 15 5 16
10 3
25 12 3
11 4
29 27 14 12
12 4
26 11 27 10
13 5
37 30 24 15 14
14 4
30 29 13 11
15 3
24 9 13
16 6
36 33 31 28 5 9
17 3
20 7 8
18 8
41 39 34 19 23 3 2 1
19 4
34 22 18 1
20 3
21 17 8
21 2
20 8
22 5
46 43 34 32 19
23 5
40 39 25 3 18
24 5
37 31 13 9 15
25 6
42 40 26 23 10 3
26 5
47 42 27 12 25
27 6
48 47 29 11 26 12
28 5
44 36 6 16 5
29 5
48 30 27 14 11
30 5
48 37 29 13 14
31 5
54 49 33 16 24
32 3
46 35 22
33 5
51 49 36 16 31
34 6
43 41 52 22 18 19
35 4
53 46 38 32
36 6
51 57 33 28 44 16
37 6
63 54 48 24 13 30
38 3
55 53 35
39 9
68 65 52 41 50 69 40 23 18
40 5
50 42 25 23 39
41 4
52 39 18 34
42 6
50 47 70 26 40 25
43 6
64 61 46 52 22 34
44 5
57 45 87 28 36
45 2
87 44
46 6
53 43 61 22 32 35
47 6
70 48 67 27 26 42
48 8
67 60 37 63 30 27 29 47
49 6
62 59 54 33 51 31
50 5
71 69 42 40 39
51 7
74 59 57 91 33 36 49
52 5
65 39 41 43 34
53 6
72 55 61 46 38 35
54 6
79 63 62 49 37 31
55 5
75 66 58 53 38
56 2
87 4
57 6
91 80 87 44 51 36
58 4
78 73 55 66
59 4
74 62 51 49
60 3
67 63 48
61 6
77 72 64 43 53 46
62 6
88 79 74 59 49 54
63 7
82 79 67 54 37 60 48
64 4
76 61 65 43
65 5
76 68 39 52 64
66 4
78 75 55 58
67 8
89 86 70 63 82 60 48 47
68 5
76 84 69 65 39
69 5
84 71 50 68 39
70 6
89 85 71 67 47 42
71 5
84 70 85 69 50
72 4
77 75 61 53
73 3
81 78 58
74 6
88 83 91 62 51 59
75 3
72 66 55
76 3
68 65 64
77 2
61 72
78 5
90 81 66 73 58
79 7
96 82 97 88 62 63 54
80 2
91 57
81 3
78 90 73
82 6
96 94 86 79 63 67
83 5
93 88 95 91 74
84 4
85 71 69 68
85 4
89 70 84 71
86 4
94 92 82 67
87 4
56 45 57 44
88 6
97 83 93 74 62 79
89 4
92 85 67 70
90 2
78 81
91 6
95 80 57 83 74 51
92 3
94 86 89
93 4
97 95 83 88
94 5
98 96 82 86 92
95 3
91 93 83
96 5
98 97 79 82 94
97 7
100 99 98 93 88 96 79
98 4
100 97 96 94
99 2
100 97
100 3
99 97 98


一个txt文件里面的内容如上所示。需要根据这些数据生成一个数组W[i][j]
上面数据的意思是:
首行数字100表示 数组w有100行100列。
接着两行的1  3
          19 18 2
表示 w[1][19]=1,w[1][18]=1,w[1][2]=1;  3只表示下面会有几个元素。
其后每两行依次都是这个规则,按照这个规则给数组w[i][j]中的元素赋值。没有赋为1的元素赋值为0.
大家来讨论下,如何读取这个文件,按照这个规则得到一个数组w[i][j].

回复列表 (共5个回复)

沙发

规则不明

板凳


[em18]什么意思

3 楼

这个文件的实际意义是。
将一个地图的100个区域分别用1到100这100个数字标示。
如果区域i和j相邻,那么矩阵w中的元素 w[i][j]赋值为1。
比如,区域1和19相邻,那么w[1][19]=1,
按照这个规则构造一个矩阵。
现在已经用软件构造出了这样的一个矩阵,但是得到的文件不是直接的元素为0,1的矩阵。而是对结果进行了统计的数据。就是楼上所示的数据文件。
它表示的意义就是:
100表示有100个区域,也就是构造的矩阵是一个100行100列的方阵。
接着的
1 3
19 18 2
表示和区域1 相邻的区域有3个,分别是区域19和区域18和区域2.按照上面的赋值规则
w[1][19]=1,w[1][18]=1,w[1][2]=1
后面每两行都是这样的赋值规则。


我的问题是,如何按照这个规则,将顶楼所显示的数据转化为一个元素为0和1的二维矩阵。不知道我这次表述的清楚不。

4 楼

想了半天也没思路 不好意思.
                      
 

5 楼

int[,] GetMatrixFromFile(string fileName)
        {
            int[,] matrix = null;
            StreamReader sr = new StreamReader(fileName);
            try
            {
                if (sr != null && sr.Peek() != -1)
                {
                    int Rand = Convert.ToInt32(sr.ReadLine());//秩
                    matrix = new int[Rand + 1, Rand + 1];//下标从1开始
                    for (int i = 1; i <= Rand; i++)
                    {
                        string temp = sr.ReadLine();
                        string[] temps = temp.Split(' ');
                        if (temps.Length == 2)
                        {
                            int line = Convert.ToInt32(temps[0]);
                            int rows = Convert.ToInt32(temps[1]);
                            temp = sr.ReadLine();
                            string[] strRows = temp.Split(' ');
                            if (rows == strRows.Length)
                            {
                                for (int j = 1; j <= rows; j++)
                                {
                                    int row = Convert.ToInt32(strRows[j - 1]);
                                    matrix[i, row] = 1;
                                }
                            }
                        }
                    }
                }
            }
            catch { }
            return matrix;
        }

这是读这个文件的C#代码。请问有属性c#和VC的高手帮我翻译一下吗?翻译成VC的

我来回复

您尚未登录,请登录后再回复。点此登录或注册