搜狗笔试编程题7行代码求验证错误

7行代码只通过了70%,求解正确答案
#include<iostream>
#include<vector>
#include<stdlib.h>
#include<algorithm>

using namespace std;

int main()
{
    int n, r;
    cin>>n>>r;
    vector<int> a(n);
    for(int i = 0; i < n;i++)
        cin>>a[i];
    sort(a.begin(), a.end());
    cout<<a[n - 1 - (r - 1) / 2];
    return 0;
}

#搜狗#
全部评论
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); int r = Integer.parseInt(sc.nextLine()); int[] a = new int[n]; for(int i = 0; i < n ; i++){ a[i] = Integer.parseInt(sc.nextLine()); } Arrays.sort(a); for(int j = r; j <= n; j++){ find(a,j); } System.out.println(a[0]); } public static void find(int[] a,int r){ int n = a.length; int[] b = new int[n]; boolean isOdd = (r-1)%2 == 0; for(int i = 0; i < n ; i++){ if(i+r < n){ if(isOdd){ b[i] = a[(i+(r-1)/2)%n]; }else{ b[i] = Math.max(a[(i+(r-1)/2)],a[(i+(r-1)/2+1)]); } }else{ int index = i+ (r-1)/2 -(i+r-1-n) -1; if(isOdd){ b[i] = a[index]; }else{ b[i] = Math.max(a[index],a[index+1]); } } } for(int i = 0; i < n; i++){ a[i] = b[i]; } // b[i]=MED(a[i],a[(i+1)mod n],a[(i+2)mod n],...a[(i+r-1)mod n]) } } 看了你写的之后感觉自己像个**。。。
点赞 回复 分享
发布于 2016-10-14 21:59
我想知道你们怎么推出的这个答案,求详细过程。别告诉我找规律
点赞 回复 分享
发布于 2016-10-15 00:28
我擦,怎么大家都是这个?哈哈我也是
点赞 回复 分享
发布于 2016-10-15 00:07
哈哈,我也是这个方法
点赞 回复 分享
发布于 2016-10-14 23:49
为什么是第n - 1 - (r - 1) / 2个,求大神答疑
点赞 回复 分享
发布于 2016-10-14 22:22
厉害我的哥。。。
点赞 回复 分享
发布于 2016-10-14 21:41
看了看自己长达40行的代码。。。也是过了70.. 哭晕在厕所
点赞 回复 分享
发布于 2016-10-14 21:31

相关推荐

05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务