6. 找大佬
创始人
2024-05-29 11:26:05
0

1 题目描述

找大佬

成绩20开启时间2021年09月24日 星期五 18:00
折扣0.8折扣时间2021年11月15日 星期一 00:00
允许迟交关闭时间2021年11月23日 星期二 10:00

众所周知,每个专业里都会有一些大佬隐藏在人群里。软件工程专业也是如此。今天的你就像从人群中找到真正的大腿,找到这个大佬。

假设现在有​名同学(编号为​到​)在班级里,这里面可能存在最多一名大佬。大佬的定义如下:

  • 他比其他​个人都强

  • 其他​个人都不比他强

我们假设强的关系不一定是绝对的(可能出现我比你强,你也比我强的情况),也不具有传递性(a比b强,b比c强,a不一定比c强),现在给你提供了int better(int a, int b)函数,该函数的参数含义如下:

参数说明
a询问的第一个人
b询问的第二个人

返回值说明如下:

返回值说明
1a比b强
0a不比b强
-1参数不合法,遇到这个时,请即时停止你的程序,你将获得Wrong Answer

我们规定自己不比自己强。

你要尽可能少的调用better函数来解决此问题,来找出真正的大佬。

输入描述

输入代码由系统帮助实现,我们约定人数​。

输入第一行包括一个整数​,表示人数。

接下来​行,每行包括​个整数good[i][j],如果其为​,表示​不比​强,如果其为​表示​比​强。

输出描述

你需要在你的函数里输出你找到的大佬,如果你没有找到,输出-1

接下来将由系统输出你的询问记录。

当你的答案正确且你询问的次数在标程的3倍以内时,你将AC此题。

预设代码

前置代码

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include
using namespace std;
const int maxn = 1005;
int n;
bool good[maxn][maxn];
void guessdalao(int n); // you should finish this
int better(int a, int b)
{
if (a <= 0 || a > n || b <= 0 || b > n) return -1;
return good[a][b];
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
int t;
scanf("%d", &t);
good[i][j] = t;
}
guessdalao(n);
return 0;
}
/*
void guessdalao(int n)
{
// finish this
}
*/

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

 测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1以文本方式显示
  1. 2↵
  2. 0 0↵
  3. 1 0↵
以文本方式显示
  1. 2↵
  2. 3↵
  3. 2 1↵
  4. 1 2↵
  5. 2 1↵
1秒153600KB0

2 代码

#include   
using namespace std;  
const int maxn = 1005;  
int n;  
bool good[maxn][maxn];  
void guessdalao(int n); // you should finish this  
int better(int a, int b)  
{  if (a <= 0 || a > n || b <= 0 || b > n) return -1;  return good[a][b];  
}  
int main()  
{   freopen("file in.txt","r",stdin);scanf("%d", &n);  for (int i = 1; i <= n; i++)  for (int j = 1; j <= n; j++)  {  int t;  scanf("%d", &t);  good[i][j] = t;  }  guessdalao(n);  return 0;  
}/* 
二分法,每次取两个出来比较,把强者下标存入新的数组,不断重复,直到只剩下一个人,注意奇数时 log2n
把这个强者再和每个人比较一下,确认比每个人强,没人比他强
*/ 
void guessdalao(int n){int stronger[n];int newdata[n];  //用来存储筛选出来的新的强者的下标,待会用来新一轮的筛选int i;int k; //遍历strongerint n0=n; //防止改动nint cmpans,cmpans1;int flag=1;// 不是大佬的标志for(i=0;inewdata[i] = i+1;}//那个强者表里面下标是从1开始的while(1){/*// 错误的把筛选出来的数据和原来的数据进行比较,导致了错乱,应该建立数组把每一次新数据存进去for(i=0,k=0;icmpans = better(newdata[i],newdata[i+1]);if(cmpans==-1){return;}if(cmpans==1){stronger[k]=newdata[i];//把强者的下标存进去k++;}if(cmpans==0){stronger[k]=newdata[i+1];//把强者的下标存进去k++;}}//奇数的情况if(n0%2==1){//这时候i刚好等于n-1;stronger[k]=newdata[i];k++;}n0 = k;if(n0==1){break;//只剩下一个人的时候退出循环}for(i=0;inewdata[i] = stronger[i];}}for(i=0;iif(stronger[0]==i+1){continue;/// 遇到自己不比较}cmpans = better(stronger[0],i+1);cmpans1 = better(i+1,stronger[0]);if(cmpans!=1||cmpans1!=0){flag=0;break;}}if(flag==0){//找出来的不是大佬,就是说没有大佬cout<<"-1"<cout<

相关内容

热门资讯

合同书电子版 合同书模板电子版(精选9篇)  随着人们对法律的了解日益加深,越来越多事情需要用到合同,签订合同是为...
软件服务合同 软件服务合同(精选12篇)  随着人们对法律的了解日益加深,合同的类型越来越多,签订合同能平衡双方当...
银行按揭贷款合同 银行按揭贷款合同范本  随着时间的推移,关于合同的利益纠纷越来越多,它可以保护民事法律关系。你所见过...
中标通知书方是合同成立的标志 中标通知书方是合同成立的标志中标通知书方是合同成立的标志  案例:2006年5月,阳光公司为采购一批...
单位用工劳动合同模版 单位用工劳动合同模版(通用7篇)  随着法治精神地不断发扬,人们愈发重视合同,合同出现的次数越来越多...
抵押合同 抵押合同  一、合同与协议的区别  双方的意思都表示一致而达成的一种契约。简单地说,就是你情我愿,然...
工业品购销合同样本 工业品购销合同样本工业品购销合同样本工 业 品 买 卖 合 同出卖人: 合同编号:(转移标的物所有权...
停职留薪申请书 停职留薪申请书  停职留薪是员工在规定的时间内工作,要求公司停职留薪。如下内容是小编为大家整理的停职...
英文合同 英文合同模板五篇  随着人们法律意识的建立,合同在生活中的使用越来越广泛,签订合同也是避免争端的最好...
供货合同 供货合同范本(精选15篇)  随着时间的推移,能够利用到合同的场合越来越多,签订合同也是非常有必要的...
国际英文合同 国际英文合同范本  随着人们法律意识的加强,合同起到的作用越来越大,签订合同能平衡双方当事人的平等地...
建设工程施工合同范本 建设工程施工合同范本  一、建设工程施工合同  建设工程施工合同是指发包方(建设单位)和承包方(施工...
灯光工程合同 灯光工程合同范本  灯光工程是为灯光装饰工程的设计、安装,灯光工程合同怎么写呢?以下是在小编为大家整...
住建部建设工程施工合同 最新住建部建设工程施工合同范本(通用5篇)  随着法治精神地不断发扬,人们愈发重视合同,合同出现在我...
防水工程施工合同书 防水工程施工合同书范本  在人们越来越相信法律的社会中,合同对我们的约束力越来越不可忽视,合同能够促...
货车以租代购简单合同 货车以租代购简单合同范本(精选5篇)  随着人们法律意识的加强,合同的类型越来越多,合同是对双方的保...
提档介绍信 - 提档介绍信 -范文×××单位(管理档案处的'全称): 兹有×××(人名)的档案属于贵单位管理,现因本...
采购文员岗位职责说明书 采购文员岗位职责说明书一、采购文员工作内容1.编写采购合同等文件,单价对比,报价单输入系统。2.编制...
转包合同范本 转包合同范本  转包合同的产生及形式近年来,随着农村商品经济的发展和开发性农业的兴起,转包合同怎么写...