【发布时间】:2020-09-18 09:59:15
【问题描述】:
有一个问题,我必须用 C++ 解决。我已经编写了整个代码并且它在给定的测试用例中工作但是当我提交它时,它说的是错误的答案。我不明白为什么它显示错误的答案。 我要求您告诉我给定代码的输入,这将给出不正确的输出,以便我可以进一步修改我的代码。
缩小数组
给定一个长度为L 的正整数数组A[]。如果A[i] 和A[i+1] 相等,则将它们替换为一个值为A[i]+1 的元素。多次执行此类操作后,找出数组的最小可能长度。
注意: 每次这样的操作后,数组的长度会减一,并且元素会相应地重命名。
输入格式:
- 第一行包含一个整数
L,表示数组A的初始长度。 - 第二行包含
L空格整数A[i]- 数组元素A[]。
输出格式:
- 打印一个整数 - 执行上述操作任意次数后可能得到的最小长度。
例子:
输入
7
3 3 4 4 4 3 3
输出
2
示例测试用例说明
3 3 4 4 4 3 3 -> 4 4 4 4 3 3 -> 4 4 4 4 4 -> 5 4 4 4 -> 5 5 4 -> 6 4.
因此数组的长度为2。
我的代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
bool end = false;
int l;
cin >> l;
int arr[l];
for(int i = 0; i < l; i++){
cin >> arr[i];
}
int len = l, i = 0;
while(i < len - 1){
if(arr[i] == arr[i + 1]){
arr[i] = arr[i] + 1;
if((i + 1) <= (len - 1)){
for(int j = i + 1; j < len - 1; j++){
arr[j] = arr[j + 1];
}
}
len--;
i = 0;
}
else{
i++;
}
}
cout << len;
return 0;
}
谢谢
【问题讨论】:
-
我无法编译代码,为什么还要麻烦输入呢?请阅读Why should I not
#include <bits/stdc++.h>? -
写一个奇怪的方言是可以的,但是你应该意识到这一点。您的代码不是标准 C++
-
@YashMalaviya 您有机会按照给出的建议进行学习。不要
using namespace std;,不要#include <bits/stdc++.h>,不要使用VLA:s。