我有2 IContextMenu
不等长度。
得分和成绩。
根据配置,一个或另一个列表大于另一个。
有两种情况:
用例1: 60分和50年级 - 1至6年级 -
我必须以均匀的方式分配50个等级的60个分数。 因此,许多等级将具有多个相关的连续分数(1:关于数据结构的N关系)
用例2: 40个分数和50个等级 - 1到6个等级 -
我必须以均匀的方式分发超过50个等级的40个分数。 因此,必须平均删除10个等级(50 - 40),以获得分数和等级之间的1:1关系数据结构。
我可以使用哪种算法来解决C#的问题?
我在这里写下了运行实施的algorythm时我希望看到的结果数据。
用例1样本结果数据:
List<float>
用例2样本结果数据:
Scores Grade
0 6
1 5,9
2 - 3 5,8
4 5,7
5 5,6
6 5,5
7 5,4
8 - 9 5,3
10 5,2
11 5,1
12 5
13 4,9
14 - 15 4,8
16 4,7
17 4,6
18 4,5
19 4,4
20 - 21 4,3
22 4,2
23 4,1
24 4
25 3,9
26 - 27 3,8
28 3,7
29 3,6
30 3,5
31 3,4
32 - 33 3,3
34 3,2
35 3,1
36 3
37 2,9
38 - 39 2,8
40 2,7
41 2,6
42 2,5
43 2,4
44 - 45 2,3
46 2,2
47 2,1
48 2
49 1,9
50 - 51 1,8
52 1,7
53 1,6
54 1,5
55 1,4
56 - 57 1,3
58 1,2
59 1,1
60 1
C#转换代码为y = f(x); - )
Score Grade
0 6
1 5,9
2 5,8
3 5,6
4 5,5
5 5,4
6 5,3
7 5,1
8 5
9 4,9
10 4,8
11 4,6
12 4,5
13 4,4
14 4,3
15 4,1
16 4
17 3,9
18 3,8
19 3,6
20 3,5
21 3,4
22 3,3
23 3,1
24 3
25 2,9
26 2,8
27 2,6
28 2,5
29 2,4
30 2,3
31 2,1
32 2
33 1,9
34 1,8
35 1,6
36 1,5
37 1,4
38 1,3
39 1,1
40 1
答案 0 :(得分:1)
假设gradesArray
是由y
索引的输入数组,scoresArray
是由x
索引的输出数组。要生成输出数组,对于输出数组中的每个索引,需要从输入数组中选择相应的值。在伪代码中:
scoresArray[x] = gradesArray[y] where y = f(x)
单词中,每个输出值scoresArray[x]
取自输入数组y
中的位置gradesArray[y]
,其中y
是x
的某个函数。那个功能是什么?嗯,这是一条线。
以下是使用line drawing algorithm解决用例1的示例代码:
int x, y, accum;
int scores = 61;
int grades = 51;
float[] gradesArray = new float[grades];
float[] scoresArray = new float[scores];
for (y = 0; y < grades; y++)
gradesArray[y] = 6.0f - y / 10.0f;
accum = (scores-1) / 2;
y = 0;
for (x = 0; x < scores; x++)
{
scoresArray[x] = gradesArray[y];
accum += (grades-1);
y += accum / (scores-1);
accum %= (scores-1);
}
要修改用例2的代码,只需将int scores = 61
更改为int scores = 41
。