0
已解决
许金夫
初级天翼
初级天翼
现在酷町堂有了一个刷题等级系统,我有一个疑问,为什么以前辛辛苦苦刷的题不算了,重新交一遍也没有用
你看我都刷一千题了还是二级
┭┮﹏┭┮ 555
希望改一下~
@酷町侠
还有我的4830这道题一直超时
#include <iostream>
using namespace std;
int a[1000001], b[1000001], c[2000001], d[1000001] , m, n, r;
int main() {
cin >>m >>n >>r;
for(int i=1; i<=m; i++) {
cin >> a[i];
}
for(int i=1; i<=n; i++) {
cin >> b[i];
}
for(int i=1; i<=r; i++) {
cin >> d[i];
}
int i = 1, j = 1, z = 1, k = 0;
while(i<=m && j<=n && z<=r) {
if(a[i] < b[j] && a[i] < d[r]) {
c[++k] = a[i];
i ++;
}
else if(b[j] < a[i] && b[j] < d[r]){
c[++k] = b[j];
j ++;
}
else if(d[r] < a[i] && d[r] < b[j]){
c[++k] = d[z];
z ++;
}
}
while(i<=m) {
c[++k] = a[i];
i ++;
}
while(j<=n) {
c[++k] = b[j];
j ++;
}
while(z<=r) {
c[++k] = d[z];
z ++;
}
for(int i=1; i<=k; i++) {
cout << c[i] << ' ';
}
return 0;
}
我用的是合并方法
因为是作业题,只要提供思路,发代码的举报
许金夫在2020-03-19 13:17:45追加了内容
请自动屏蔽我的coding币,就当它没显示
0
已采纳
王子健
初级天翼
初级天翼
这个我也希望改回来,毕竟刷过的题目也不能再次刷了。
接下来我来回答你的4830,我的作业也是这道题目,我来跟你说一下思路:
我先讲a,b两个数组合并至d数组
再将d数组和c数组合并至e数组
最后输出e数组
这种思路简单易懂,我知道你那种是直接合并3个数组的方法,但是极容易超时,而且比较难懂,麻烦
所以就显示出我思路的简便了,毕竟上课讲的是合并2个有序数组,你只要把上课的代码好好看看然后再写两个上课的归并就可以了
但是,切记,这道题不管什么方法都是变量多,数组多,while多,非常容易晕,所以一定要检查,要检查,要检查(重要的事情说3遍)