如果可以将数字除以数组的元素数,则不能在数组中(例如:在具有10个元素的数组中,数字1,2,5和10不受欢迎)。因此,我需要在数组中找到所有这些元素并将其踢出。在数组的长度更改之后,然后可以在数组中“不欢迎”其他一些元素。我必须重复它,直到数组没有这些元素。最后,我必须计算剩余元素并将其打印出来。 (我正在使用C ++)
所以,我已经尝试过了,但是我敢肯定还有更有效的方法:P这是代码:
int main()
{
short int b = 0;
short int n;
int result = 0;
cin >> n;
int m = n;
int numbers[n];
for (int i = 0; i < n; i++) {
cin >> numbers[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j<=n; j++) {
if(numbers[j] != 0) {
if(n % numbers[j] == 0) {
numbers[j] = 0;
b = b + 1;
} }
}
n = n - b;
b = 0;
}
for (int i = 0; i < m; i++) {
result += numbers[i];
}
cout << result;
return 0;
}
示例输入:10 1 2 3 4 5 6 7 8 9 10 示例输出:24
答案 0 :(得分:0)
我不知道如何从数组中删除元素
不可能“从数组中删除元素”。 n
元素数组以n
元素开始其生命,在其整个生命周期中具有n
元素,并以n
元素结束其生命。无法更改数组的大小。
另一个问题:
cin >> n; int numbers[n];
数组的大小必须是编译时间常数。 n
不是编译时间常数。这不是格式正确的C ++程序。
必须动态分配运行时大小的数组。最简单的解决方案是使用std::vector
。向量的大小可以更改,您可以使用std::vector::erase
从其中删除元素。