例如我有这个数组:
int[] a = {1,1,1,1,5,5,1,1,1};
//output: 4 2 3
换句话说,它将打印相同数字的序列。 我已经尝试过了:
int doubles_count_while (int a[][], int n, int cestatic) {
int result = 1;
while (result < n && a[result - 1][cestatic] == a[result][cestatic]) {
result++;
}
return result;
}
int doubles_groups(int a[][], int n, int cestatic, int b[]) {
int result = 0;
int i = 0;
while (i < n) {
int z = doubles_count_while(a, n-i, a[i][cestatic]);
b[result++] = z; i += z;
}
return result;
}
答案 0 :(得分:2)
发布代码时,请将其发布为MCVE,以便我们可以实际运行它。您还应该告诉我们您希望此代码执行的操作和它的功能。尝试将其缩小到一行代码,而这些代码没有按照您的预期进行。
这是一个非常广泛的问题,但我会尝试在一般意义上提供帮助。你需要退后一步,忘记代码。如果有人递给你一堆带有数字的索引卡片并要求你将它们分组,请记下你所遵循的步骤,没有电脑。你究竟会怎么做?
假装你有一个非常愚蠢的朋友,他不知道如何分组。您应该能够将您的指示交给该朋友,并让他们按照他们的方式对您的卡片进行分组,而无需您的任何帮助。记住这位朋友是多么愚蠢,所以请确保你的指示尽可能小。
如果您已经写出了这些说明,那么您可以开始考虑使用代码实现这一算法。试图深入研究代码而不清楚你想要它做什么只会给你带来很多麻烦。祝你好运。