问题标题: 酷町堂:关于酷町堂的小问题

0
0
已解决
许金夫
许金夫
初级天翼
初级天翼

现在酷町堂有了一个刷题等级系统,我有一个疑问,为什么以前辛辛苦苦刷的题不算了,重新交一遍也没有用

你看我都刷一千题了还是二级

┭┮﹏┭┮ 555

希望改一下~

@酷町侠

 

 

 

还有我的4830这道题一直超时

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遍)

 

我要回答