| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:小弟的代码出了点问题,但不知道问题出在哪里?望各位前辈给看一看
只看楼主 加入收藏
sdffstg
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-2-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
小弟的代码出了点问题,但不知道问题出在哪里?望各位前辈给看一看
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
// 算法训练 区间k大数查询.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
int main(int argc, char* argv[])
{
    int i, j, d, m, n, p, l[1000], r[1000], k[1000], t, a[1000], b[1000], c[1000];
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d", &m);
    for (i = 0; i < m; i++)
    {
        scanf("%d %d %d", &l[i], &r[i], &k[i]);
    }
    for (i = 0; i < m; i++)
    {
        for (d = 0; d < n; d++)
        {
            b[d] = a[d];
        }
        for (p = l[i]-1; p < r[i]; p++)
        {
            for (j = p+1; j < r[i]; j++)
            {
                if (a[p] < a[j])
                {
                    t = b[p];
                    b[p] = b[j];
                    b[j] = t;
                }
            }
        }
        c[i] = b[l[i]+k[i]-2];
    }
    for (i = 0; i < m; i++)
        printf("%d\n", c[i]);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

编译可以通过,原题中的例子经测试也正确,但是提交后系统给判总是过不了。
搜索更多相关主题的帖子: color 
2015-02-23 19:23
sdffstg
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-2-20
收藏
得分:0 
我这里有测试的数据,要传附件吗?
2015-02-23 19:26
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:20 
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
#define FREE(res) if(res) free(res), res = NULL

int val[MAX] = {0};

int get_int(void) {
    int input;
    char ch;

    while(scanf("%d", &input) != 1 || input <= 0)
        while((ch = getchar()) != '\n');

    return input;
}

void sort(int *arr, int l, int r, int K) {
    int len = r - l + 1;
    int i, j;
    static int idx = 0;
    int *a = malloc(len * sizeof(int));

    if(!a) {
        printf("MALLOC ERROR!\n");
        exit(1);
    }

    for(i = 0; i < len; i++) a[i] = arr[l + i];

    for(i = 0; i < len; i++){
        for(j = 0 ; j < (len - i - 1); j++) {
            if(a[j] < a[j + 1]) {
                a[j] = a[j] ^ a[j + 1];
                a[j + 1] = a[j] ^ a[j + 1];
                a[j] = a[j] ^ a[j + 1];
            }
        }
    }

    val[idx++] = a[K - 1];
    FREE(a);
}

int main(int argc, char **argv) {
    int a[MAX] = {0};
    int i, j, l, r, m, n, K;
    i = j = l = r = m = n = K = 0;
    n = get_int();

    while(i < n) a[i++] = get_int();

    m = get_int();

    while(j++ < m) {
        l = get_int() - 1;
        r = get_int() - 1;
        K = get_int();
        sort(a, l, r, K);
    }

    for(i = 0; i < m; i++) printf("%d\n", val[i]);

    return 0;
}

[ 本帖最后由 longwu9t 于 2015-2-24 18:50 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2015-02-23 20:50
快速回复:小弟的代码出了点问题,但不知道问题出在哪里?望各位前辈给看一看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018530 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved