我有一项作业要求计算几天,一个月中几次收集到多少不同的蘑菇,并按天升序排列
含义:
11-多少行(用于 for 函数)
第一个数字-收集蘑菇的天数
另外三个数字-不同类型的蘑菇( B , R 和 L )
数据示例:
11
2 8 4 0
3 1 0 9
1 2 3 4
5 4 14 2
2 4 4 4
3 0 0 0
15 25 45 13
28 13 13 13
16 2 0 2
16 5 15 25
3 4 44 444
*重复的天数表示当天收集了几次蘑菇
我已经按顺序排列了它们,但无法合并数组(蘑菇)
*(n)代表数字11
void count (int D[], int B[], int R[], int L[], int n){
for ( int i=0; i<n;i++){
for ( int j=i+1; j<n;j++){
if ( D[i]==D[j] && B[i] > B[j] && R[i] > R[j] && L[i] > L[j] ) {
; B[i]+=B[j];R[i]+=R[j];L[i]+=L[j];
}
if ( D[i] > D[j] ){
swap(D[i],D[j]);swap(B[i],B[j]);swap(R[i],R[j]);swap(L[i],L[j]);
}
}
}
}
我必须具备的条件:
1 2 3 4
2 12 8 4
3 5 44 453
5 4 14 2
15 25 45 13
16 7 15 27
28 13 13 13
我得到的:
1 2 3 4
2 8 4 0
2 4 4 4
3 1 0 9
3 0 0 0
3 4 44 444
5 4 14 2
15 25 45 13
16 7 15 27
16 2 0 2
28 13 13 13
答案 0 :(得分:0)
好吧。我了解您拥有代表天数和蘑菇类型的数组。
我有一些步骤可以帮助您了解一些想法:
1)使用结构表示记录,以减少数组数。
2)实现一个函数,通过其day属性对该结构的数组进行排序。
3)实现一个接受排序数组(A1)(由上述函数排序)的函数,并在其中声明该结构的数组并循环到A1上,如果A1 [i -1] .day!= A1 [i] .day,如果发现重复,只需更新它的最后一个值,并在循环后返回函数中声明的数组。
希望这些步骤会提示您。