(酒店评分)有人过100%么
发布于 2017-04-01 20:48 3304 次浏览 0 赞 最后一次编辑是 2017-04-01 20:49 来自 我要提问  

去哪儿前端编程题第二道,只有20%

13 条回复

我连20%都没有,在本地输出都是正确的。。。

2017-04-01 20:58

我也20%。。

2017-04-01 21:00

我也20%,自己感觉没毛病,提交了,洗洗睡了。。。。

2017-04-01 21:03

哪位大佬贴个代码看看

2017-04-01 21:03

两道题本地测试均正确,调试后,第一个显示所有测试数据均不正确,第二个显示正确率0.0%,不知道为什么。

2017-04-01 21:19

真的有毒,冒泡写了一遍以为时间上崩掉了,又用归并写一遍,还是20%,后台数据真的是对的吗

2017-04-01 21:19

20%  感觉可能是复杂度太高了。。。

2017-04-01 21:19
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5+7;
int n;
struct D{
    int grade[5] = {0,0,0,0,0};
    int Min = 6;
    int index;
    int ave;
}p[maxn];

bool cmp(const D & a, const D & b){
    if(a.Min == b.Min){
        if(a.ave == b.ave){
            return a.index <= b.index;
        }
        return a.ave >= b.ave;
    }
    return a.Min >= b.Min;
}

int main()
{
    cin>>n;
    for(int i=0;i<n;i++){
        p[i].index = i;
        for(int j=0;j<5;j++){
            cin>>p[i].grade[j];
            p[i].ave += p[i].grade[j];
            p[i].Min = min(p[i].grade[j], p[i].Min);
        }
    }
    sort(p,p+n,cmp);
    for(int i=0;i<n-1;i++){
        cout<<p[i].index<<" ";
    }
    cout<<p[n-1].index<<endl;
    return 0;
}

讲道理我感觉没错啊  就是20%

2017-04-01 21:22
1
    function a(line) {
        var store = [];
        for(var i = 0 ;i<line.length;i++){
          var arr = line[i].split(' ');
          var temp = {},
              sum = 0;
          temp.index = i;
          temp.score = Math.min.apply(null,arr);
          for(var j = 0;j<arr.length; j++) {
            sum += parseInt(arr[j]);
          }
          temp.avarage = sum/(arr.length);
          if(store.length ===0 ){
            store.push(temp);
          } 
          else {
            for(var k = 0; k < store.length; k++) {
              if(temp.score > store[k].score){
                store.splice(k,0,temp);
                break;
              }
              else if(temp.score === store[k].score){
                if(store[k].avarage < temp.avarage){
                  store.splice(k,0,temp);
                  break;
                }
                else{
                  if(k === store.length-1){
                    store.push(temp);
                    break;
                  }
                }
              }
              else{
                if(k === store.length-1){
                  store.push(temp);
                  break;
                }
              }
            }
          }
        }
        var result = store.map(function(val,index){
          return val.index;
        });
        console.log(result.join(' ')); 
    }
    var b = a(['0 4 5 3 4','3 3 3 3 3','5 4 4 3 5','5 5 5 5 5','5 2 4 3 4']);

这个是本地的,考试就参照把line改成while(line= read_line()) 对i进行一下改变,然后在第一行先把n=read_line();取出来,然后console换成print,我也感觉代码没啥毛病,也只过了20%,可能是中了20%的毒

2017-04-01 21:25
1
#include <iostream>

using namespace std;

struct JiuDian{
	int J;
	int Low;
	int Sum;
}Arr[10001], p[10001];
	
int sumGoal(int a[]){
	int res = 0;
	for (int i = 0; i < 5; i++){
		res += a[i];
	}
	return res;
}

int lowGoal(int a[]){
	int Min = a[0];
	for (int i = 1; i < 5; i++){
		if (a[i] < Min){
			Min = a[i];
		}
	}
	return Min;
}

bool Better(JiuDian a, JiuDian b){
	if (a.Low > b.Low){
		return true;
	}
	else if (a.Low == b.Low){
		if (a.Sum > b.Sum){
			return true;
		}
		else if (a.Sum == b.Sum){
			if (a.J < b.J){
				return true;
			}	
		}
	}
	return false;
}

void BubbleSort(int n)  
{  
	int i, j;  
	for (i = 0; i < n; i++){
		for (j = 1; j < n - i; j++){
			if (!Better(Arr[j-1], Arr[j])){
				swap(Arr[j-1], Arr[j]);
			}
		}  	
	}                           
}  

void mergearray(JiuDian a[], int first, int mid, int last, JiuDian temp[])  
{  
    int i = first;
	int j = mid + 1;  
    int m = mid;
	int n = last;  
    int k = 0;  
      
    while (i <= m && j <= n)  
    {  
        if (!Better(a[i], a[j]))  
            temp[k++] = a[i++];  
        else  
            temp[k++] = a[j++];  
    }  
      
    while (i <= m)  
        temp[k++] = a[i++];  
      
    while (j <= n)  
        temp[k++] = a[j++];  
      
    for (i = 0; i < k; i++)  
        a[first + i] = temp[i];  
}  

void mergesort(JiuDian a[], int first, int last, JiuDian temp[])  
{  
    if (first < last)  
    {  
        int mid = (first + last) / 2;  
        mergesort(a, first, mid, temp);     
        mergesort(a, mid + 1, last, temp);  
        mergearray(a, first, mid, last, temp);  
    }  
}  

int main(){
	int n;
	cin >> n;
	
	for (int i = 0; i < n; i++){
		Arr[i].J = i;
		int goal[5] = {0};
		for (int j = 0; j < 5; j++){
			cin >> goal[j];
		}
		Arr[i].Low = lowGoal(goal);
		Arr[i].Sum = sumGoal(goal);
	}
	if (n == 1){
		cout << 0 << endl;
	}
	else{
		// 冒泡 
		BubbleSort(n);
		// 归并 
		//mergesort(Arr, 0, n-1, p);
		for (int i = 0; i < n; i++){
			cout << Arr[i].J << " ";
		}
		cout << endl;
	}
	return 0;
}

这是我写的,冒泡和归并都有,排序题做了很多都快背下来了hhh,也是20%,不知道到底错在哪里

2017-04-01 21:31
coder_BEV42PBP 回复 coder_FWW5ZXP7

我也是结构题排序 感觉没坑啊。。

2017-04-01 21:31
coder_BEV42PBP 回复 acmcodervLBbCe28

不会是复杂度的问题吧 才四次方的数据 就算是0(n2)2s也不会超啊,快排logn怎么都不会超啊 感觉是有坑

2017-04-01 21:34

百分之20,不知道为什么

2017-04-01 21:48
添加回复
回到顶部