数据结构与算法面试题80道(36)
2016-03-15 15:42
274 查看
36.引用自网友:longzuo
谷歌笔试:
n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,
存储在一个二维数组w
中,w[i][j] 的 代表编号为i,j的队伍中更强的一支。
所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order
中,
比如order
= {4,3,5,8,1......},那么第一轮比赛就是 4对3, 5对8。.......
胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排,
下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是4对5,直至出现第一名
编程实现,给出二维数组w,一维数组order 和 用于输出比赛名次的数组result
,
求出result。
这题很简单吧,动态维护一个order,赢了就留在order,输了就放入result,知道order中只剩一个
数据是在网上找的,和别人的对的到
谷歌笔试:
n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,
存储在一个二维数组w
中,w[i][j] 的 代表编号为i,j的队伍中更强的一支。
所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order
中,
比如order
= {4,3,5,8,1......},那么第一轮比赛就是 4对3, 5对8。.......
胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排,
下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是4对5,直至出现第一名
编程实现,给出二维数组w,一维数组order 和 用于输出比赛名次的数组result
,
求出result。
#include<iostream> #include<stdio.h> #include<vector> #include<assert.h> using namespace std; #define N 5 //队伍数 void getResult(int (*w) ,int *order,int *result,int groupNum){ //确保程序的正确性 assert(groupNum>0); int i=0,j=0; int cur=groupNum-1;//result数组游标 vector<int>vOrder; for(i=0;i<groupNum;i++) vOrder.push_back(order[i]); while(vOrder.size()>1){ for(vector<int>::iterator it=vOrder.begin();it!=vOrder.end();it++){ if(it+1!=vOrder.end()){//防溢出 if(w[*it][*(it+1)]==*it){//赢了将it+1放进result,并移除它 result[cur--]=*(it+1); vOrder.erase(it+1); }else{//输了,呜呜,被移除 result[cur--]=*it; vOrder.erase(it); } } } } if(vOrder.size()==1) result[cur--]=vOrder[0]; } int main(){ int w ={{0,1,2,3,4},{1,1,2,3,4},{2,2,2,3,4},{3,3,3,3,4},{4,4,4,4,4}}; int order ={4,3,1,2,0}; int result ; getResult(w,order,result,N); for(int i=1;i<=N;i++)//注意,我的队伍是从1号开始的 cout<<"第"<<i<<"名为"<<result[i-1]+1<<"号队伍\n"; return 0; }
这题很简单吧,动态维护一个order,赢了就留在order,输了就放入result,知道order中只剩一个
数据是在网上找的,和别人的对的到
相关文章推荐
- 数据结构,传值
- 数据结构(RMQ):UVAoj 11235 Frequent values
- 可视化的数据结构 - 各种算法动画演示
- 数据结构笔记-----树
- 【数据结构】重新面对数据结构
- 数据结构课设 求前缀表达式的值
- 数据结构(Data Structure)——1、栈(Stack)
- 数据结构技术之可视化,,,,很棒
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- JAVA数据结构---动态扩展内存自定义ArrayList
- 经典算法与数据结构的c++实现——冒泡排序
- 复杂数据结构(一)树
- 二叉查找树的基本操作(建立,插入,删除,遍历)
- 数据结构6——图 广度与深度优先搜索