【发布时间】:2018-10-28 18:09:45
【问题描述】:
问。取一个长度为 n 的数组,其中所有数字都是非负的且唯一的。找到数组中具有最高值的元素。将元素分成两部分,其中第一部分包含数组中的下一个最高值,第二部分包含所需的附加实体以获得最高值。打印最高值被分成这两个部分的数组。 样本输入:4 8 6 3 2 样本输出:4 6 2 6 3 2
#include <array>
#include <iostream>
using namespace std;
int main () {
int n, i, b, c, m;
cin >> n;
int a[ n ];
int z[ n + 1 ];
b = a[ 0 ];
c = a[ 0 ];
for (i = 0; i < n; i++)
cin >> a[ i ];
for (i = 0; i < n; i++) {
if (b < a[ i ])
b = a[ i ];
}
for (i = 0; i < n; i++) {
if (c < a[ i ] && a[ i ] != b)
c = a[ i ];
if (a[ i ] == b)
m = i;
}
for (i = 0; i < m; i++) {
z[ i ] = a[ i ];
}
for (i = m + 2; i < n + 1; i++) {
z[ i ] = a[ i - 1 ];
}
z[ m ] = c;
z[ m + 1 ] = b - c;
for (i = 0; i < n + 1; i++)
cout << z[ i ] << endl;
return 0;
}
【问题讨论】:
-
“崩溃”是什么意思?不编译?你得到一个运行时错误?其次,这个:
int a[n];int z[n+1];-- 无效C++。 C++ 中的数组必须具有由常量表达式而不是变量表示的条目数。相反,请使用std::vector<int>。 -
一个问题是
b和c被设置为a[0]在 将值读入a。 -
您的示例输出现在包含非唯一值 6 和 2。这是否允许?
-
为什么我们必须猜测这是运行时错误还是编译错误?我会说你的格式风格是你现在最大的敌人。
-
这是一个运行时错误,顺便说一句,感谢你们所有人,我将改进我的格式样式,因为我开始编程只有一个星期。
标签: c++