2016攜程測試實習生筆試編程題


 

四道大題:

第一道題,是攜程網站有一個725*286(具體不記得了)廣告區域,能想到的測試類型及方法。

寫測試用例——2016年1月1日到2016年3月1日同一訂單往返機票立減50 全部功能點。

第二道題,sql語句。(該學sql- -)

第三道題,編程題:

有N個球,M個顏色(M小於等於N),求要想從這N個球里拿出全部(M)個顏色的球,至少需要拿多少個。

思路:

我又是用map實現的,當map的size==M的時候,就說明顏色已經集齊了,計算一個minNum,然后繼續掃描,更新minNum

感覺效率有點低,先粘上來代碼,明天優化一下(集齊顏色后,判斷是否一定需要更新minNum)

#include<iostream>
#include<map>
#include<vector>
using namespace std;

int CollectColor(vector<int> balls,int M){
    map<int,int> collect;
    int minNum=9999,mintemp=9999;
    for(int i=0;i<balls.size();i++){
        collect[balls[i]]=i;   //map記下每個顏色最近出現的位置
        if(collect.size()==M)  //集齊顏色就不再掃描了
        {    
            int maxIndex=0,minIndex=99999;
            for(auto j=collect.begin();j!=collect.end();j++){
                
                if((*j).second>maxIndex)
                    maxIndex=(*j).second;
                if((*j).second<minIndex)
                    minIndex=(*j).second;
                mintemp=maxIndex-minIndex+1;
            }
                if(mintemp<minNum)
                    minNum=mintemp;

        }
        
    }
    return minNum;
}

int main(){
    int array1[]={0,1,2,6,7,4,1,1,1,1,2,6,7,2,2,0};
    vector<int> v1(array1,array1+16);
    cout<<CollectColor(v1,6)<<endl;
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM